mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 02:41:17 +00:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b2ae48e4a | ||
|
|
8095904bc2 | ||
|
|
b7c86befe1 | ||
|
|
526a91d323 | ||
|
|
493896260e | ||
|
|
ca83497bb6 | ||
|
|
6a985744c4 |
@@ -5,9 +5,8 @@
|
|||||||
# re-sliced on its own to see whether it changes the G-code
|
# re-sliced on its own to see whether it changes the G-code
|
||||||
# harness - the GUI-vs-CLI parity harness (metrics only, never fails)
|
# harness - the GUI-vs-CLI parity harness (metrics only, never fails)
|
||||||
# Both test the latest successful build_all.yml Linux AppImage from main, with
|
# Both test the latest successful build_all.yml Linux AppImage from main, with
|
||||||
# sources checked out at the commit that build was made from; a manual run can
|
# sources checked out at the commit that build was made from. Nothing here
|
||||||
# name another branch, or pin one build by its run id. Nothing here gates a
|
# gates a build or a PR.
|
||||||
# build or a PR.
|
|
||||||
name: Parity Nightly
|
name: Parity Nightly
|
||||||
|
|
||||||
on:
|
on:
|
||||||
@@ -21,13 +20,9 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
default: "main"
|
default: "main"
|
||||||
build_branch:
|
build_branch:
|
||||||
description: "branch whose newest successful build_all artifact to test (a PR build is the PR merged into its base; sources are checked out at the PR head)"
|
description: "branch whose latest successful build_all artifact to test"
|
||||||
required: false
|
required: false
|
||||||
default: "main"
|
default: "main"
|
||||||
build_run_id:
|
|
||||||
description: "build_all run id to test instead of build_branch's newest (same PR caveat)"
|
|
||||||
required: false
|
|
||||||
default: ""
|
|
||||||
fixtures:
|
fixtures:
|
||||||
description: "harness fixture ids, space-separated (empty = all)"
|
description: "harness fixture ids, space-separated (empty = all)"
|
||||||
required: false
|
required: false
|
||||||
@@ -55,53 +50,14 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
GH_REPO: ${{ github.repository }}
|
GH_REPO: ${{ github.repository }}
|
||||||
BRANCH: ${{ inputs.build_branch || 'main' }}
|
|
||||||
RUN_ID: ${{ inputs.build_run_id }}
|
|
||||||
SCHEDULED: ${{ github.event_name == 'schedule' }}
|
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
if [ -n "$RUN_ID" ]; then
|
gh run list --workflow build_all.yml \
|
||||||
[[ $RUN_ID =~ ^[0-9]+$ ]] || { echo "build_run_id must be a numeric run id, got '$RUN_ID'" >&2; exit 1; }
|
--branch "${{ inputs.build_branch || 'main' }}" \
|
||||||
# a pinned build is read directly, not through a search; it must come
|
--status success --limit 1 --json databaseId,headSha \
|
||||||
# from this repository, because the later jobs check out its commit here
|
--jq '"run_id=\(.[0].databaseId)\nhead_sha=\(.[0].headSha)"' \
|
||||||
found=$(gh api "repos/$GH_REPO/actions/runs/$RUN_ID" --jq \
|
>> "$GITHUB_OUTPUT"
|
||||||
'select(.path == ".github/workflows/build_all.yml" and .conclusion == "success"
|
|
||||||
and .head_repository.full_name == env.GH_REPO)
|
|
||||||
| "\(.id) \(.head_sha) \(.created_at)"')
|
|
||||||
[ -n "$found" ] || { echo "run $RUN_ID is not a successful build_all run of $GH_REPO" >&2; exit 1; }
|
|
||||||
else
|
|
||||||
# GitHub serves filtered run listings (branch=, status=, head_sha=, ...)
|
|
||||||
# from a search index that has returned weeks-old results, while the
|
|
||||||
# unfiltered listing stays current, so list unfiltered and filter here.
|
|
||||||
# The repository check keeps out fork PRs whose branch has the same
|
|
||||||
# name. A feature branch is normally built only for its PR, and a PR
|
|
||||||
# build compiles the PR merged into its base rather than head_sha, so
|
|
||||||
# a build of the branch itself (push or dispatch) is preferred when
|
|
||||||
# the same page has one.
|
|
||||||
pick='([.workflow_runs[] | select(.head_branch == env.BRANCH and .conclusion == "success"
|
|
||||||
and .head_repository.full_name == env.GH_REPO)]
|
|
||||||
| map(select(.event != "pull_request"))[0] // .[0])
|
|
||||||
| select(.) | "\(.id) \(.head_sha) \(.created_at)"'
|
|
||||||
# a page of 100 runs spans about a day and a half; a manual run may
|
|
||||||
# target a branch that last built weeks ago
|
|
||||||
pages=3
|
|
||||||
if [ "$SCHEDULED" != true ]; then pages=20; fi
|
|
||||||
found=""
|
|
||||||
for page in $(seq "$pages"); do
|
|
||||||
found=$(gh api "repos/$GH_REPO/actions/workflows/build_all.yml/runs?per_page=100&page=$page" --jq "$pick")
|
|
||||||
if [ -n "$found" ]; then break; fi
|
|
||||||
done
|
|
||||||
[ -n "$found" ] || { echo "no successful $BRANCH build among the last $((pages * 100)) build_all runs; pass build_run_id to test an older one" >&2; exit 1; }
|
|
||||||
fi
|
|
||||||
read -r run_id head_sha created <<< "$found"
|
|
||||||
# the nightly fails rather than report on a stale build
|
|
||||||
if [ "$SCHEDULED" = true ] && [ $(( $(date +%s) - $(date -d "$created" +%s) )) -gt 172800 ]; then
|
|
||||||
echo "newest $BRANCH build $run_id is from $created, over 48 hours old" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printf 'run_id=%s\nhead_sha=%s\n' "$run_id" "$head_sha" >> "$GITHUB_OUTPUT"
|
|
||||||
cat "$GITHUB_OUTPUT"
|
cat "$GITHUB_OUTPUT"
|
||||||
echo "Testing build [$run_id](https://github.com/$GH_REPO/actions/runs/$run_id) of \`$head_sha\`, built $created" >> "$GITHUB_STEP_SUMMARY"
|
|
||||||
|
|
||||||
effect:
|
effect:
|
||||||
name: Override sweep effect stage (shard ${{ matrix.shard }})
|
name: Override sweep effect stage (shard ${{ matrix.shard }})
|
||||||
|
|||||||
+1
-42
@@ -826,37 +826,6 @@ find_package(OpenSSL REQUIRED)
|
|||||||
find_package(CURL REQUIRED)
|
find_package(CURL REQUIRED)
|
||||||
find_package(Freetype REQUIRED)
|
find_package(Freetype REQUIRED)
|
||||||
|
|
||||||
if (SLIC3R_GUI)
|
|
||||||
# LibDataChannel's installed export references its bundled dependencies,
|
|
||||||
# but does not install their CMake targets. Recreate those targets from
|
|
||||||
# the same dependency prefix before loading the LibDataChannel config.
|
|
||||||
if (NOT TARGET Usrsctp::usrsctp)
|
|
||||||
find_library(_ORCA_USRSCTP_LIBRARY NAMES usrsctp
|
|
||||||
PATHS "${CMAKE_PREFIX_PATH}/lib" NO_DEFAULT_PATH)
|
|
||||||
if (_ORCA_USRSCTP_LIBRARY)
|
|
||||||
add_library(Usrsctp::usrsctp UNKNOWN IMPORTED GLOBAL)
|
|
||||||
set_target_properties(Usrsctp::usrsctp PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${_ORCA_USRSCTP_LIBRARY}"
|
|
||||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
|
||||||
INTERFACE_LINK_LIBRARIES "Threads::Threads")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT TARGET LibJuice::LibJuice)
|
|
||||||
find_library(_ORCA_LIBJUICE_LIBRARY NAMES juice
|
|
||||||
PATHS "${CMAKE_PREFIX_PATH}/lib" NO_DEFAULT_PATH)
|
|
||||||
if (_ORCA_LIBJUICE_LIBRARY)
|
|
||||||
add_library(LibJuice::LibJuice UNKNOWN IMPORTED GLOBAL)
|
|
||||||
set_target_properties(LibJuice::LibJuice PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${_ORCA_LIBJUICE_LIBRARY}"
|
|
||||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
|
||||||
INTERFACE_LINK_LIBRARIES "Threads::Threads")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(LibDataChannel CONFIG REQUIRED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
add_library(libcurl INTERFACE)
|
add_library(libcurl INTERFACE)
|
||||||
target_link_libraries(libcurl INTERFACE CURL::libcurl)
|
target_link_libraries(libcurl INTERFACE CURL::libcurl)
|
||||||
@@ -1137,7 +1106,6 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
|||||||
endif ()
|
endif ()
|
||||||
file(COPY ${_occt_dlls}
|
file(COPY ${_occt_dlls}
|
||||||
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/avformat-61.dll
|
|
||||||
${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll
|
${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/swresample-5.dll
|
${CMAKE_PREFIX_PATH}/bin/swresample-5.dll
|
||||||
${CMAKE_PREFIX_PATH}/bin/swscale-8.dll
|
${CMAKE_PREFIX_PATH}/bin/swscale-8.dll
|
||||||
@@ -1150,7 +1118,6 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
|||||||
${_out_dir}/WebView2Loader.dll
|
${_out_dir}/WebView2Loader.dll
|
||||||
|
|
||||||
${_out_dir}/freetype.dll
|
${_out_dir}/freetype.dll
|
||||||
${_out_dir}/avformat-61.dll
|
|
||||||
${_out_dir}/avcodec-61.dll
|
${_out_dir}/avcodec-61.dll
|
||||||
${_out_dir}/swresample-5.dll
|
${_out_dir}/swresample-5.dll
|
||||||
${_out_dir}/swscale-8.dll
|
${_out_dir}/swscale-8.dll
|
||||||
@@ -1174,10 +1141,7 @@ function(orcaslicer_copy_sos target config postfix output_sos)
|
|||||||
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}")
|
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
file(COPY ${CMAKE_PREFIX_PATH}/lib/libavformat.so
|
file(COPY ${CMAKE_PREFIX_PATH}/lib/libavcodec.so
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavformat.so.61
|
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavformat.so.61.1.100
|
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so
|
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61
|
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100
|
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100
|
||||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so
|
${CMAKE_PREFIX_PATH}/lib/libavutil.so
|
||||||
@@ -1192,9 +1156,6 @@ function(orcaslicer_copy_sos target config postfix output_sos)
|
|||||||
DESTINATION ${_out_dir})
|
DESTINATION ${_out_dir})
|
||||||
|
|
||||||
set(${output_sos}
|
set(${output_sos}
|
||||||
${_out_dir}/libavformat.so
|
|
||||||
${_out_dir}/libavformat.so.61
|
|
||||||
${_out_dir}/libavformat.so.61.1.100
|
|
||||||
${_out_dir}/libavcodec.so
|
${_out_dir}/libavcodec.so
|
||||||
${_out_dir}/libavcodec.so.61
|
${_out_dir}/libavcodec.so.61
|
||||||
${_out_dir}/libavcodec.so.61.3.100
|
${_out_dir}/libavcodec.so.61.3.100
|
||||||
@@ -1324,8 +1285,6 @@ endif ()
|
|||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set(LIBRARY_FILES
|
set(LIBRARY_FILES
|
||||||
${LIBDIR_BIN}/libavformat.so.61
|
|
||||||
${LIBDIR_BIN}/libavformat.so.61.1.100
|
|
||||||
${LIBDIR_BIN}/libavcodec.so.61
|
${LIBDIR_BIN}/libavcodec.so.61
|
||||||
${LIBDIR_BIN}/libavcodec.so.61.3.100
|
${LIBDIR_BIN}/libavcodec.so.61.3.100
|
||||||
${LIBDIR_BIN}/libavutil.so.59
|
${LIBDIR_BIN}/libavutil.so.59
|
||||||
|
|||||||
Vendored
+11
-23
@@ -156,7 +156,7 @@ if (NOT _is_multi AND NOT CMAKE_BUILD_TYPE)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
function(orcaslicer_add_cmake_project projectname)
|
function(orcaslicer_add_cmake_project projectname)
|
||||||
cmake_parse_arguments(P_ARGS "FORWARD_CONFIG" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND;SOURCE_DIR" "CMAKE_ARGS" ${ARGN})
|
cmake_parse_arguments(P_ARGS "FORWARD_CONFIG" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
||||||
|
|
||||||
# MSVC is true for clang-cl as well, so the sub-build toolchain has to key on the
|
# MSVC is true for clang-cl as well, so the sub-build toolchain has to key on the
|
||||||
# generator. A non-Visual-Studio superbuild passes its own generator down, and with
|
# generator. A non-Visual-Studio superbuild passes its own generator down, and with
|
||||||
@@ -202,18 +202,12 @@ function(orcaslicer_add_cmake_project projectname)
|
|||||||
set(_build_j "-j${NPROC}")
|
set(_build_j "-j${NPROC}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(_source_dir_arg "")
|
|
||||||
if (P_ARGS_SOURCE_DIR)
|
|
||||||
set(_source_dir_arg SOURCE_DIR ${P_ARGS_SOURCE_DIR})
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
dep_${projectname}
|
dep_${projectname}
|
||||||
EXCLUDE_FROM_ALL ON
|
EXCLUDE_FROM_ALL ON
|
||||||
INSTALL_DIR ${DESTDIR}
|
INSTALL_DIR ${DESTDIR}
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
||||||
${_source_dir_arg}
|
|
||||||
${_gen}
|
${_gen}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
@@ -246,14 +240,12 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
|||||||
# note for future devs: shared libs may actually create a size reduction
|
# note for future devs: shared libs may actually create a size reduction
|
||||||
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
|
# but orcaslicer_deps tends to get really funny regarding linking after that (notably boost)
|
||||||
# so, as much as I would like to use that, it's not happening
|
# so, as much as I would like to use that, it's not happening
|
||||||
if (NOT P_ARGS_SOURCE_DIR)
|
ExternalProject_Add_Step(dep_${projectname} free_download_space
|
||||||
ExternalProject_Add_Step(dep_${projectname} free_download_space
|
DEPENDEES download # do after download
|
||||||
DEPENDEES download # do after download
|
COMMENT "Freeing Space: Removing source archive"
|
||||||
COMMENT "Freeing Space: Removing source archive"
|
WORKING_DIRECTORY ${DEP_DOWNLOAD_DIR}
|
||||||
WORKING_DIRECTORY ${DEP_DOWNLOAD_DIR}
|
COMMAND ${CMAKE_COMMAND} -E rm -r ${projectname}
|
||||||
COMMAND ${CMAKE_COMMAND} -E rm -rf ${projectname}
|
)
|
||||||
)
|
|
||||||
endif ()
|
|
||||||
ExternalProject_Add_Step(dep_${projectname} free_build_space
|
ExternalProject_Add_Step(dep_${projectname} free_build_space
|
||||||
DEPENDEES install # do after install
|
DEPENDEES install # do after install
|
||||||
COMMENT "Freeing Space: Removing source and build files"
|
COMMENT "Freeing Space: Removing source and build files"
|
||||||
@@ -267,7 +259,6 @@ else()
|
|||||||
EXCLUDE_FROM_ALL ON
|
EXCLUDE_FROM_ALL ON
|
||||||
INSTALL_DIR ${DESTDIR}
|
INSTALL_DIR ${DESTDIR}
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
|
||||||
${_source_dir_arg}
|
|
||||||
${_gen}
|
${_gen}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
@@ -395,6 +386,10 @@ include(libnoise/libnoise.cmake)
|
|||||||
|
|
||||||
include(Draco/Draco.cmake)
|
include(Draco/Draco.cmake)
|
||||||
|
|
||||||
|
include(FFMPEG/FFMPEG.cmake)
|
||||||
|
include(Assimp/Assimp.cmake)
|
||||||
|
|
||||||
|
|
||||||
# I *think* 1.1 is used for *just* md5 hashing?
|
# I *think* 1.1 is used for *just* md5 hashing?
|
||||||
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
|
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
|
||||||
# a grep across the repo shows it is used for other things
|
# a grep across the repo shows it is used for other things
|
||||||
@@ -405,12 +400,6 @@ if(NOT OPENSSL_FOUND)
|
|||||||
set(OPENSSL_PKG dep_OpenSSL)
|
set(OPENSSL_PKG dep_OpenSSL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(FFMPEG/FFMPEG.cmake)
|
|
||||||
include(Assimp/Assimp.cmake)
|
|
||||||
|
|
||||||
include(DataChannel/DataChannel.cmake)
|
|
||||||
set(DATACHANNEL_PKG dep_DataChannel)
|
|
||||||
|
|
||||||
# we don't want to load a "wrong" openssl when loading curl
|
# we don't want to load a "wrong" openssl when loading curl
|
||||||
# so, just don't even bother
|
# so, just don't even bother
|
||||||
# ...i think this is how it works? change if wrong
|
# ...i think this is how it works? change if wrong
|
||||||
@@ -484,7 +473,6 @@ set(_dep_list
|
|||||||
dep_wxInspector
|
dep_wxInspector
|
||||||
dep_FFMPEG
|
dep_FFMPEG
|
||||||
dep_Assimp
|
dep_Assimp
|
||||||
${DATACHANNEL_PKG}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
|||||||
Vendored
-37
@@ -1,37 +0,0 @@
|
|||||||
# libdatachannel is the native ICE/DTLS/SCTP implementation used by the
|
|
||||||
# GUI WebRTC camera controller. Keep the source revision fixed: the signaling
|
|
||||||
# protocol is evolving independently of this transport dependency.
|
|
||||||
#
|
|
||||||
# It vendors plog, usrsctp and libjuice as git submodules, which a plain
|
|
||||||
# GitHub tag tarball does not include. The flatpak sandbox has no network
|
|
||||||
# access during the build, so there the manifest itself clones the repo
|
|
||||||
# (submodules and all) into the dependency download directory before the
|
|
||||||
# sandbox closes. ExternalProject_Add is pointed at that existing checkout
|
|
||||||
# instead of being given its own network-dependent download method.
|
|
||||||
if (FLATPAK)
|
|
||||||
set(_datachannel_source
|
|
||||||
SOURCE_DIR ${DEP_DOWNLOAD_DIR}/DataChannel
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
set(_datachannel_source
|
|
||||||
GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git
|
|
||||||
GIT_TAG v0.24.5
|
|
||||||
GIT_SHALLOW ON
|
|
||||||
GIT_SUBMODULES_RECURSE ON
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
orcaslicer_add_cmake_project(DataChannel
|
|
||||||
DEPENDS ${OPENSSL_PKG}
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DNO_EXAMPLES=ON
|
|
||||||
-DNO_TESTS=ON
|
|
||||||
-DNO_WEBSOCKET=ON
|
|
||||||
-DNO_MEDIA=ON
|
|
||||||
-DUSE_NICE=OFF
|
|
||||||
-DUSE_SYSTEM_JUICE=OFF
|
|
||||||
-DUSE_SYSTEM_USRSCTP=OFF
|
|
||||||
-DOPENSSL_ROOT_DIR:PATH=${DESTDIR}
|
|
||||||
-DOPENSSL_USE_STATIC_LIBS=ON
|
|
||||||
${_datachannel_source}
|
|
||||||
)
|
|
||||||
Vendored
+7
-23
@@ -1,26 +1,14 @@
|
|||||||
set(_conf_cmd ./configure)
|
set(_conf_cmd ./configure)
|
||||||
|
|
||||||
set(_ffmpeg_depends)
|
|
||||||
set(_ffmpeg_configure_command ${_conf_cmd})
|
|
||||||
if (TARGET dep_OpenSSL)
|
|
||||||
set(_ffmpeg_depends DEPENDS dep_OpenSSL)
|
|
||||||
set(_ffmpeg_configure_command
|
|
||||||
${CMAKE_COMMAND} -E env
|
|
||||||
"PKG_CONFIG_PATH=${DESTDIR}/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}"
|
|
||||||
${_conf_cmd}
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
||||||
|
|
||||||
set(PREBUILD_URL_arm64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-09-18-16-50/ffmpeg-n7.0.3-33-g887d4b4919-winarm64-orca-shared-7.0.zip")
|
set(PREBUILD_URL_arm64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-07-17-14-28/ffmpeg-n7.0.3-31-g9b6ffd74b5-winarm64-orca-shared-7.0.zip")
|
||||||
set(PREBUILD_HASH_arm64 "da480cbb39680056de824c57ec4dc3bd577b479ebbc310ff1f9dc55cf014b4c1")
|
set(PREBUILD_HASH_arm64 "12f4140279f2f8469885e1b5b2e8be9d788882914c21523cacd56989f3548054")
|
||||||
set(PREBUILD_URL_x64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-09-18-16-50/ffmpeg-n7.0.3-33-g887d4b4919-win64-orca-shared-7.0.zip")
|
set(PREBUILD_URL_x64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-07-17-14-28/ffmpeg-n7.0.3-31-g9b6ffd74b5-win64-orca-shared-7.0.zip")
|
||||||
set(PREBUILD_HASH_x64 "85da19daf198f5548259d8aabb349db84997a3f6e6886d8d7764114add9c6dae")
|
set(PREBUILD_HASH_x64 "e65916020ddb9ef84b2666dfbcbfc9b1d67f69d15b4a66db53754637bf2d498c")
|
||||||
|
|
||||||
ExternalProject_Add(dep_FFMPEG
|
ExternalProject_Add(dep_FFMPEG
|
||||||
${_ffmpeg_depends}
|
|
||||||
URL ${PREBUILD_URL_${DEPS_ARCH}}
|
URL ${PREBUILD_URL_${DEPS_ARCH}}
|
||||||
URL_HASH SHA256=${PREBUILD_HASH_${DEPS_ARCH}}
|
URL_HASH SHA256=${PREBUILD_HASH_${DEPS_ARCH}}
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||||
@@ -33,8 +21,6 @@ if (MSVC)
|
|||||||
)
|
)
|
||||||
|
|
||||||
else ()
|
else ()
|
||||||
set(_openssl_cmd --enable-openssl)
|
|
||||||
|
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set(_minos_cmd
|
set(_minos_cmd
|
||||||
"--extra-cflags=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
"--extra-cflags=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||||
@@ -66,11 +52,10 @@ else ()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
ExternalProject_Add(dep_FFMPEG
|
ExternalProject_Add(dep_FFMPEG
|
||||||
${_ffmpeg_depends}
|
|
||||||
URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.3.tar.gz
|
URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.3.tar.gz
|
||||||
URL_HASH SHA256=DEEDCABE339165214A3637DF4C86A507AEF0D793CF8774FF68735F4737E8DDBC
|
URL_HASH SHA256=DEEDCABE339165214A3637DF4C86A507AEF0D793CF8774FF68735F4737E8DDBC
|
||||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||||
CONFIGURE_COMMAND ${_ffmpeg_configure_command}
|
CONFIGURE_COMMAND ${_conf_cmd}
|
||||||
${_cross_cmd}
|
${_cross_cmd}
|
||||||
${_pic_cmd}
|
${_pic_cmd}
|
||||||
${_arch_cmd}
|
${_arch_cmd}
|
||||||
@@ -78,21 +63,20 @@ else ()
|
|||||||
"--prefix=${DESTDIR}"
|
"--prefix=${DESTDIR}"
|
||||||
${_link_cmd}
|
${_link_cmd}
|
||||||
${_minos_cmd}
|
${_minos_cmd}
|
||||||
${_openssl_cmd}
|
|
||||||
--disable-doc
|
--disable-doc
|
||||||
--enable-small
|
--enable-small
|
||||||
--disable-outdevs
|
--disable-outdevs
|
||||||
--disable-filters
|
--disable-filters
|
||||||
--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*
|
--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*
|
||||||
--disable-protocols
|
--disable-protocols
|
||||||
--enable-protocol=file,fd,pipe,http,https,rtp,tcp,udp
|
--enable-protocol=file,fd,pipe,rtp,udp
|
||||||
--disable-muxers
|
--disable-muxers
|
||||||
--enable-muxer=rtp
|
--enable-muxer=rtp
|
||||||
--disable-encoders
|
--disable-encoders
|
||||||
--disable-decoders
|
--disable-decoders
|
||||||
--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*
|
--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*
|
||||||
--disable-demuxers
|
--disable-demuxers
|
||||||
--enable-demuxer=h264,mp3,mov,mpjpeg,rtsp,sdp
|
--enable-demuxer=h264,mp3,mov
|
||||||
--disable-zlib
|
--disable-zlib
|
||||||
--disable-avdevice
|
--disable-avdevice
|
||||||
BUILD_IN_SOURCE ON
|
BUILD_IN_SOURCE ON
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
# G-code preview while dragging
|
||||||
|
|
||||||
|
The sliced preview draws every toolpath segment of the plate as an instanced box. On a large
|
||||||
|
plate that is tens of millions of segments, and the frame is GPU-bound: the cost is the number of
|
||||||
|
instances drawn, not anything the CPU does per frame. Dragging the camera over such a plate cannot
|
||||||
|
keep up. The `preview_reduced_detail_mode` preference (*Graphics > G-code Preview*, off by
|
||||||
|
default) lets the preview draw less while the user drags and put the full toolpaths back when they
|
||||||
|
let go.
|
||||||
|
|
||||||
|
| Preference | Values | Effect |
|
||||||
|
|---|---|---|
|
||||||
|
| `preview_reduced_detail_mode` | `off`, `solid`, `layers`, `outer_walls`, `shell` | what is drawn while dragging |
|
||||||
|
| `preview_reduced_detail_layer_stride` | 1–20 | one layer in every N is kept by the toolpath modes |
|
||||||
|
|
||||||
|
libvgcode (`src/libvgcode`) builds and binds the reduced toolpath set, `GCodeViewer` maps the
|
||||||
|
preferences onto it and draws the solid model, and `GLCanvas3D` decides when the user is dragging.
|
||||||
|
The OpenGL ES path keeps a single set and ignores the preference.
|
||||||
|
|
||||||
|
## Two sets, one walk
|
||||||
|
|
||||||
|
`ViewerImpl::update_enabled_entities()` walks the visible vertex range once and fills two segment
|
||||||
|
index buffers side by side: the **full** set and the **reduced** set (segments and options).
|
||||||
|
Building them together is what makes switching free: starting or ending a drag is a buffer
|
||||||
|
binding, never a rebuild. A change of mode or stride does rebuild. Nothing is built while the mode
|
||||||
|
is off, and the reduced buffers are then uploaded empty so that the last set does not stay
|
||||||
|
allocated.
|
||||||
|
|
||||||
|
Whatever the mode leaves out, the bottom and top layers of the visible range are kept whole: they
|
||||||
|
are the faces the range cuts open, and the top is what the user is looking at.
|
||||||
|
|
||||||
|
### Modes
|
||||||
|
|
||||||
|
- `EndLayersOnly` (`solid` in the preference) keeps only the two end layers. `GCodeViewer` then
|
||||||
|
draws the sliced objects and the prime tower as opaque solids, see below.
|
||||||
|
- `LayersOnly` (`layers`) keeps every role of one layer in every stride.
|
||||||
|
- `OuterWallsOnly` (`outer_walls`) keeps the outer and overhang perimeters of one layer in every
|
||||||
|
stride. The prime tower and supports have other roles and are left out.
|
||||||
|
- `ShellOnly` (`shell`) keeps what the shell extraction below marks as visible surface, of one
|
||||||
|
layer in every stride, plus whatever a view from above or below sees of the skipped layers, so
|
||||||
|
that a step does not vanish. It is the only mode that knows the prime tower's outside from its
|
||||||
|
inside.
|
||||||
|
|
||||||
|
## The solid model
|
||||||
|
|
||||||
|
The preview already loads the sliced objects as shells for its translucent ghost.
|
||||||
|
`GCodeViewer::render_solid_model()` draws those shells opaque, in their filament colors, with the
|
||||||
|
`gouraud` shader, whose z range cuts them to the visible layer range. The two toolpath layers of
|
||||||
|
the reduced set are drawn afterwards and cap the cut with what was really printed there. The
|
||||||
|
shells hold only the objects, so while this mode is on the prime tower is added from its sliced
|
||||||
|
mesh, positioned as the print placed it. It is added or removed on its own when the mode changes,
|
||||||
|
without reloading the objects, keeps its opaque color so that it never appears among the
|
||||||
|
translucent shells, and stays out of their bounding box. Supports have no mesh and are not shown,
|
||||||
|
and `load_shells()` drops every non-model-part volume, so a negative volume is not cut out.
|
||||||
|
|
||||||
|
A plate whose shells are not loaded keeps drawing toolpaths, since the solid model would leave
|
||||||
|
only the end layers.
|
||||||
|
|
||||||
|
## Shell extraction
|
||||||
|
|
||||||
|
`ViewerImpl::update_shell_bitset()` classifies every extrusion segment once per load, on demand
|
||||||
|
the first time the shell mode needs it, and records the result in four bit sets. It is purely
|
||||||
|
geometric so that the wipe tower, whose every segment shares one role, works as well as the
|
||||||
|
objects.
|
||||||
|
|
||||||
|
Each layer is rasterized into a coarse 2D **occupancy grid** over the print's footprint: cells
|
||||||
|
are 0.5 mm, or coarser so that the grid is at most 1024 cells across. The footprint is then
|
||||||
|
**closed** with a radius of 2.5 mm so that sparse infill and support read as the solid area they
|
||||||
|
belong to, while holes wider than 5 mm stay open. The closing dilates each 8-connected component
|
||||||
|
separately and leaves a cell that two components both reach empty, so the gap between two objects
|
||||||
|
standing close together is never bridged and both of their facing walls stay on the shell;
|
||||||
|
fragments under eight cells do not spread and are absorbed by whatever reaches them. A separable
|
||||||
|
erosion shrinks the result back, and the raw cells are OR-ed in again so that a closing never
|
||||||
|
loses one.
|
||||||
|
|
||||||
|
A cell is a **shell cell** when it is filled and any of its six neighbours, four in the layer,
|
||||||
|
one below, one above, is not. A segment is on the shell when at least half of the cells it
|
||||||
|
crosses are shell cells: walls run along the shell, infill only touches it at the ends. The
|
||||||
|
interior infill roles and gap fill are excluded regardless, since short infill segments hugging a
|
||||||
|
wall would otherwise pass by the thousand.
|
||||||
|
|
||||||
|
Two refinements keep sloped surfaces closed:
|
||||||
|
|
||||||
|
- **Near-wall segments.** The step between one layer's outer wall and the next is often
|
||||||
|
narrower than a cell. An inner wall (`Perimeter`) segment whose midpoint lies within a line and
|
||||||
|
a half of an outer or overhang perimeter of the same layer is kept as well. So is any segment,
|
||||||
|
whatever its role, whose midpoint lies within that reach, or a cell if larger, of an outer wall
|
||||||
|
of the layer above or below: that strip is the exposed band of the step, which the cell tests
|
||||||
|
cannot see when it is narrower than a cell.
|
||||||
|
- **Top and bottom visibility.** The same pass records the highest and lowest layer occupying
|
||||||
|
each cell over the whole print. A segment whose layer is the topmost occupant of any cell it
|
||||||
|
crosses is visible from above, and likewise from below with the lowest. These segments are kept
|
||||||
|
even when their layer is skipped by the stride.
|
||||||
|
|
||||||
|
The layer range is split across up to eight `std::async` workers, each owning its grids. An
|
||||||
|
allocation failure on a huge print falls back to marking every segment as shell, which leaves out
|
||||||
|
only the hidden infill roles.
|
||||||
|
|
||||||
|
## Deciding that the user is dragging
|
||||||
|
|
||||||
|
`GLCanvas3D::_update_preview_interaction()` runs at the top of every preview frame, before the
|
||||||
|
canvas decides whether to reuse its cached scene, so that the switch lands in that frame. Dragging
|
||||||
|
is `GLCanvas3D::is_user_interacting()`, the same answer the scene cache reads: the camera, the
|
||||||
|
navigator, a gizmo, the rectangle selection or either slider being held. A slider reports this from
|
||||||
|
ImGui's active id rather than its dirty flag, which is raised and consumed inside one frame. A
|
||||||
|
wheel step has no duration, so it holds the reduced set for a 150 ms settle time instead, and the
|
||||||
|
frame that restores the toolpaths is scheduled for when that time runs out, since the render timer
|
||||||
|
only wakes the idle loop. A drag cut short by focus or capture loss is ended explicitly, and a
|
||||||
|
button release wakes the idle loop, because on some platforms nothing else would until the next
|
||||||
|
input.
|
||||||
|
|
||||||
|
## Reused scene frames
|
||||||
|
|
||||||
|
`GLCanvas3D` keeps its last scene pass for frames that only rebuild the overlay (`SceneCache`). Its
|
||||||
|
key covers the canvas size, the camera and hover state, not what the toolpath sets draw, so a frame
|
||||||
|
that reuses the scene must never be one on which the set is switched.
|
||||||
|
`_update_preview_interaction()` therefore reports whether the bound set changed, and a frame on
|
||||||
|
which it did redraws the scene. The canvas neither captures nor reuses the scene while the user
|
||||||
|
drags, so no reduced frame outlives a drag, and the frame that ends a wheel's settle time is
|
||||||
|
requested as a full frame.
|
||||||
@@ -1,240 +0,0 @@
|
|||||||
# Printer agents
|
|
||||||
|
|
||||||
Printer agents isolate printer-specific communication from the rest of OrcaSlicer. The GUI and
|
|
||||||
`DeviceManager` operate on a shared set of printer operations and device state; a selected printer
|
|
||||||
agent implements those operations for a particular printer ecosystem. The agent boundary allows
|
|
||||||
Bambu, Moonraker-based printers, built-in integrations, and Python-provided integrations to use the
|
|
||||||
same application workflow without making the GUI understand every printer protocol.
|
|
||||||
|
|
||||||
The current boundary is an adapter boundary around the existing application contract. In particular,
|
|
||||||
some request fields and message payloads still use the Bambu-shaped representation that existing
|
|
||||||
`MachineObject` and `DeviceManager` code consumes. The printer agent is responsible for translating
|
|
||||||
that representation into the protocol spoken by its printer. This is an intentional compatibility
|
|
||||||
constraint of the current design; the interface is not yet a neutral printer protocol.
|
|
||||||
|
|
||||||
The v1 dialect migration path is deliberately narrow. `DeviceManager` currently speaks the Bambu JSON
|
|
||||||
dialect because that is the payload shape already used throughout the command and state workflow. The
|
|
||||||
v1 `OrcaPrinterAgent` also accepts that Bambu dialect. Its transport path places the small translation
|
|
||||||
needed for the target printer at `deliver_to_sink`, keeping the compatibility code at the edge rather
|
|
||||||
than spreading it through `DeviceManager` or the agent interface.
|
|
||||||
|
|
||||||
The eventual direction is for `DeviceManager` to produce an Orca JSON dialect. The Bambu agent will then
|
|
||||||
own the translation from Orca JSON to Bambu's protocol, while `OrcaPrinterAgent` can forward the Orca
|
|
||||||
payload directly to its sink. The v1 translation at `deliver_to_sink` can then be removed without
|
|
||||||
changing `DeviceManager`, the command callers, or the rest of the agent workflow.
|
|
||||||
|
|
||||||
## Components
|
|
||||||
|
|
||||||
The system has four relevant layers:
|
|
||||||
|
|
||||||
```text
|
|
||||||
GUI / DeviceManager / MachineObject
|
|
||||||
|
|
|
||||||
NetworkAgent
|
|
||||||
/ \
|
|
||||||
IPrinterAgent ICloudServiceAgent
|
|
||||||
| |
|
|
||||||
printer protocol authentication and cloud services
|
|
||||||
```
|
|
||||||
|
|
||||||
### `DeviceManager` and `MachineObject`
|
|
||||||
|
|
||||||
`DeviceManager` owns the application-facing printer workflow. It maintains `MachineObject` instances,
|
|
||||||
updates their state, filters devices for the active printer agent, and initiates operations such as
|
|
||||||
homing, temperature changes, printing, subscriptions, and camera playback.
|
|
||||||
|
|
||||||
`MachineObject` remains the shared state model used by the GUI. It does not contain the implementation
|
|
||||||
of a printer protocol. When a device is discovered or returned by a cloud query, the device is tagged
|
|
||||||
with the active `printer_agent_id`. Device lists and selected-machine operations use that tag to avoid
|
|
||||||
sending an operation through an agent that does not own the device.
|
|
||||||
|
|
||||||
### `NetworkAgent`
|
|
||||||
|
|
||||||
`NetworkAgent` is the façade used by the GUI and `DeviceManager`. It owns:
|
|
||||||
|
|
||||||
- the currently selected `IPrinterAgent`;
|
|
||||||
- the registered cloud-service instances, indexed by provider;
|
|
||||||
- callbacks shared by the active printer agent and the application;
|
|
||||||
- the forwarding methods for printer commands and cloud operations.
|
|
||||||
|
|
||||||
There is one active printer agent for the currently selected printer preset. Switching the preset
|
|
||||||
increments the machine-list generation, disconnects the old printer agent, removes its callbacks, and
|
|
||||||
installs the newly selected agent. The façade then forwards printer operations to that agent.
|
|
||||||
|
|
||||||
Cloud operations are selected separately using a provider key. `NetworkAgent` forwards a cloud request
|
|
||||||
to the matching `ICloudServiceAgent`, and forwards cloud camera operations with a device ID. The
|
|
||||||
printer agent receives a cloud-agent pointer through `set_cloud_agent()` when it is created, allowing
|
|
||||||
printer communication to obtain cloud tokens without depending on a concrete cloud implementation.
|
|
||||||
|
|
||||||
### `IPrinterAgent`
|
|
||||||
|
|
||||||
`IPrinterAgent` is the printer-facing contract. It covers:
|
|
||||||
|
|
||||||
- cloud-relay and direct-LAN message delivery;
|
|
||||||
- LAN connection, discovery, binding, and certificates;
|
|
||||||
- printer subscriptions and callbacks;
|
|
||||||
- print operations;
|
|
||||||
- filament synchronization;
|
|
||||||
- camera capability and local camera URL reporting;
|
|
||||||
- printer command methods.
|
|
||||||
|
|
||||||
Concrete built-in implementations include the Bambu wrapper, the native Orca/Moonraker path, and
|
|
||||||
other printer-agent implementations registered by the application. A printer agent may use either
|
|
||||||
the cloud agent, a direct LAN connection, or both.
|
|
||||||
|
|
||||||
### `ICloudServiceAgent`
|
|
||||||
|
|
||||||
`ICloudServiceAgent` owns authentication and services provided by a cloud backend. It covers login
|
|
||||||
state, tokens, user and printer lists, settings synchronization, model services, cloud messages, and
|
|
||||||
cloud camera operations.
|
|
||||||
|
|
||||||
Cloud camera operations are device-scoped:
|
|
||||||
|
|
||||||
- `get_camera_url(dev_id, callback)` obtains a stream URL for one device;
|
|
||||||
- `create_camera_signaling_channel(dev_id)` creates signaling for one device where the provider
|
|
||||||
supports it.
|
|
||||||
|
|
||||||
This is separate from the local camera URL exposed by `IPrinterAgent`, which is currently scoped to
|
|
||||||
the active printer agent because a normal LAN agent represents one physical printer connection.
|
|
||||||
|
|
||||||
## Agent registration and selection
|
|
||||||
|
|
||||||
`NetworkAgentFactory` maintains the printer-agent registry. Each registry entry contains an agent ID,
|
|
||||||
a display name, and a factory function. Built-in agents register during application initialization.
|
|
||||||
Python printer-agent capabilities register dynamically and contribute an agent ID and factory entry.
|
|
||||||
|
|
||||||
The selected printer preset contains the printer-agent choice. If no explicit choice is stored, the
|
|
||||||
application preserves the existing default behavior: Bambu presets select the Bambu agent and other
|
|
||||||
presets select the native Orca agent. When a preset is changed, `GUI_App` resolves the effective agent
|
|
||||||
ID, obtains the corresponding cloud agent, creates the printer agent through the registry, and installs
|
|
||||||
it in `NetworkAgent`.
|
|
||||||
|
|
||||||
The registry rejects conflicting agent IDs. This matters for Python plugins because an agent ID is the
|
|
||||||
stable identity used by presets and device ownership; two enabled plugin capabilities must not claim
|
|
||||||
the same ID.
|
|
||||||
|
|
||||||
## Message and command flow
|
|
||||||
|
|
||||||
There are two low-level message paths:
|
|
||||||
|
|
||||||
- `send_message()` publishes a command through the printer's cloud relay;
|
|
||||||
- `send_message_to_printer()` sends a command directly to the printer over the LAN path.
|
|
||||||
|
|
||||||
Both paths accept a JSON string, quality-of-service and flag values, and return the existing network
|
|
||||||
status code domain. The agent owns the conversion from that JSON contract to its native transport.
|
|
||||||
|
|
||||||
The typed `command_*` methods are the application-facing convenience layer. The five generic defaults
|
|
||||||
currently implemented by `IPrinterAgent` construct the existing JSON dialect and route through the
|
|
||||||
same message path:
|
|
||||||
|
|
||||||
| Method | Default operation |
|
|
||||||
| --- | --- |
|
|
||||||
| `command_xyz_abs()` | Send `G90` for absolute positioning |
|
|
||||||
| `command_auto_leveling()` | Send `G29` for bed leveling |
|
|
||||||
| `command_go_home()` | Use the supported homing operation or send `G28` |
|
|
||||||
| `command_set_bed()` | Use the supported bed control or send `M140` |
|
|
||||||
| `command_set_nozzle()` | Send `M104` for nozzle temperature |
|
|
||||||
|
|
||||||
These are compatibility defaults for common printer workflows, not a guarantee that every firmware
|
|
||||||
implements every command identically. An agent can override a method when its protocol needs another
|
|
||||||
operation. For example, a Klipper configuration may use `BED_MESH_CALIBRATE` instead of `G29`.
|
|
||||||
|
|
||||||
The remaining common command methods default to `ORCA_NETWORK_ERR_CMD_NOT_SUPPORTED` because their
|
|
||||||
existing behavior is vendor-specific or has no portable implementation:
|
|
||||||
|
|
||||||
- AMS RFID refresh;
|
|
||||||
- AMS calibration;
|
|
||||||
- AMS tray selection;
|
|
||||||
- camera start;
|
|
||||||
- axis control.
|
|
||||||
|
|
||||||
The methods remain on the common interface so an agent that supports them can override them explicitly.
|
|
||||||
`sequence_id` remains part of the command contract because `DeviceManager` creates and tracks it as
|
|
||||||
the command ID.
|
|
||||||
|
|
||||||
## Device ownership and stale responses
|
|
||||||
|
|
||||||
Printer-agent ownership is represented by `printer_agent_id` on device records and `MachineObject`
|
|
||||||
instances. The active agent ID is attached when a device is discovered, returned by a cloud list, or
|
|
||||||
reused after a preset switch. Local-machine configuration also persists the agent ID so a saved LAN
|
|
||||||
device is not silently reused by an unrelated agent.
|
|
||||||
|
|
||||||
Cloud printer-list responses carry three pieces of request context added by `NetworkAgent`:
|
|
||||||
|
|
||||||
```text
|
|
||||||
provider cloud provider used for the request
|
|
||||||
agent_id active printer agent when the request was made
|
|
||||||
generation machine-list generation when the request was made
|
|
||||||
```
|
|
||||||
|
|
||||||
`DeviceManager` accepts the response only when those values still match the current provider, active
|
|
||||||
agent, and generation. This prevents a slow response from the previous preset or provider from
|
|
||||||
repopulating the current device list.
|
|
||||||
|
|
||||||
The provider mapping is currently selected by `GUI_App`: the Bambu agent maps to the Bambu cloud
|
|
||||||
provider and other agents map to the Orca cloud provider. The generation check protects that existing
|
|
||||||
selection from races; it does not make cloud-provider ownership intrinsic to an agent. Cloud-printer
|
|
||||||
ownership and the broader Orca cloud services are therefore still separate architectural concerns.
|
|
||||||
|
|
||||||
## Python printer agents
|
|
||||||
|
|
||||||
`PrinterAgentPluginCapability` implements `IPrinterAgent` directly. The live capability object is
|
|
||||||
registered with `NetworkAgentFactory` and handed out as the printer agent when its agent ID is selected.
|
|
||||||
The plugin receives the selected `ICloudServiceAgent` through `set_cloud_agent()` just like a built-in
|
|
||||||
printer agent.
|
|
||||||
|
|
||||||
Python plugins must implement the core communication and lifecycle methods required by the interface,
|
|
||||||
including agent metadata, printer connection, discovery callbacks, and the two message-send methods.
|
|
||||||
Methods that are meaningful only to a particular printer are optional overrides where the C++ base
|
|
||||||
class provides a default.
|
|
||||||
|
|
||||||
All ten `command_*` methods are available in the Python binding and in the trampoline. Their override
|
|
||||||
status is intentionally optional:
|
|
||||||
|
|
||||||
- the five generic commands use the C++ default when Python does not override them;
|
|
||||||
- the five vendor-specific commands return `NOT_SUPPORTED` unless Python supplies an implementation;
|
|
||||||
- a Python implementation can replace either behavior for its own protocol.
|
|
||||||
|
|
||||||
The Python camera binding exposes HTTP, HTTPS, RTSP, and HTTP-snapshot modes. WebRTC remains a
|
|
||||||
built-in C++ camera mode, but is not exposed as a Python mode because the current Python capability
|
|
||||||
does not provide the corresponding cloud signaling-channel contract.
|
|
||||||
|
|
||||||
## Camera playback boundary
|
|
||||||
|
|
||||||
The camera stream mode describes how a stream is obtained; it does not by itself define ownership of
|
|
||||||
the wxWidgets view that renders it. `MediaPlayCtrl` selects and tears down the active backend, while
|
|
||||||
the wx parent owns the child window or renderer. This is important because a web view, native media
|
|
||||||
control, and frame-based/WebRTC renderer have different wx window-lifetime requirements.
|
|
||||||
|
|
||||||
Cloud URL and signaling requests are routed through `NetworkAgent` to the cloud provider selected for
|
|
||||||
the device. Local URL requests are routed to the active printer agent. The distinction keeps cloud
|
|
||||||
account services device-scoped while preserving the current one-LAN-agent/one-printer model.
|
|
||||||
|
|
||||||
## Compatibility constraints
|
|
||||||
|
|
||||||
The printer-agent boundary intentionally preserves several existing application contracts:
|
|
||||||
|
|
||||||
- Bambu-shaped JSON is still the shared command representation;
|
|
||||||
- existing network status codes are reused, with Orca-specific unsupported/capability errors added
|
|
||||||
in the Orca-reserved range;
|
|
||||||
- `MachineObject` remains the shared device-state model;
|
|
||||||
- preset and local-machine data retain compatibility with the existing agent-selection behavior;
|
|
||||||
- Python plugins use the existing capability and pybind11 registration system.
|
|
||||||
|
|
||||||
The agent abstraction is therefore responsible for containing vendor differences, not for pretending
|
|
||||||
that all vendor protocols are identical. The planned Orca JSON dialect is the protocol-neutral command
|
|
||||||
model for the `DeviceManager`/agent boundary. Once it is introduced, Bambu-specific translation remains
|
|
||||||
inside the Bambu agent and the Orca agent's v1 sink adapter can be removed as a self-contained cleanup.
|
|
||||||
|
|
||||||
## Main implementation locations
|
|
||||||
|
|
||||||
- [`IPrinterAgent`](../../src/slic3r/Utils/IPrinterAgent.hpp) — printer-agent contract and generic command defaults
|
|
||||||
- [`ICloudServiceAgent`](../../src/slic3r/Utils/ICloudServiceAgent.hpp) — cloud service and per-device
|
|
||||||
cloud camera contract
|
|
||||||
- [`NetworkAgent`](../../src/slic3r/Utils/NetworkAgent.hpp) — façade and dispatch between active agents
|
|
||||||
- [`NetworkAgentFactory`](../../src/slic3r/Utils/NetworkAgentFactory.hpp) — built-in and Python agent registry
|
|
||||||
- [`DeviceManager`](../../src/slic3r/GUI/DeviceCore/DevManager.cpp) — device ownership, filtering, and
|
|
||||||
stale-response checks
|
|
||||||
- [`PrinterAgentPluginCapability`](../../src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp)
|
|
||||||
— Python bindings
|
|
||||||
- [`MediaPlayCtrl`](../../src/slic3r/GUI/MediaPlayCtrl.cpp) — camera backend selection and playback lifecycle
|
|
||||||
+2881
-1
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "AliZ PA-CF @P1-X1",
|
"name": "AliZ PA-CF @P1-X1",
|
||||||
"inherits": "AliZ PA-CF @base",
|
"inherits": "AliZ PA-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "cN0uesF0mZf3KSkj",
|
"setting_id": "AliZ003_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"enable_pressure_advance": [
|
"enable_pressure_advance": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "AliZ PETG @P1-X1",
|
"name": "AliZ PETG @P1-X1",
|
||||||
"inherits": "AliZ PETG @base",
|
"inherits": "AliZ PETG @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "cZp23cC4ong9q6dn",
|
"setting_id": "AliZ001_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"enable_pressure_advance": [
|
"enable_pressure_advance": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "AliZ PETG-CF @P1-X1",
|
"name": "AliZ PETG-CF @P1-X1",
|
||||||
"inherits": "AliZ PETG-CF @base",
|
"inherits": "AliZ PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "HWW5mejsB0SfEfWw",
|
"setting_id": "AZ01-1_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"enable_pressure_advance": [
|
"enable_pressure_advance": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "AliZ PETG-Metal @P1-X1",
|
"name": "AliZ PETG-Metal @P1-X1",
|
||||||
"inherits": "AliZ PETG-Metal @base",
|
"inherits": "AliZ PETG-Metal @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "JqD0blE4fxaNfXqB",
|
"setting_id": "AZ01-2_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"enable_pressure_advance": [
|
"enable_pressure_advance": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "AliZ PLA @P1-X1",
|
"name": "AliZ PLA @P1-X1",
|
||||||
"inherits": "AliZ PLA @base",
|
"inherits": "AliZ PLA @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "fRELapY8YiP4qrBW",
|
"setting_id": "AliZ002_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"enable_pressure_advance": [
|
"enable_pressure_advance": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ABS @BBL A1",
|
"name": "BETA ABS @BBL A1",
|
||||||
"inherits": "BETA ABS @base",
|
"inherits": "BETA ABS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "dUGRrmxU89pRaJ2Z",
|
"setting_id": "BABB00_07",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"20"
|
"20"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ABS @BBL H2D",
|
"name": "BETA ABS @BBL H2D",
|
||||||
"inherits": "BETA ABS @base",
|
"inherits": "BETA ABS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "oxZKTEMd8TpyoH39",
|
"setting_id": "BABB00_11",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"65"
|
"65"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ABS @BBL P1P",
|
"name": "BETA ABS @BBL P1P",
|
||||||
"inherits": "BETA ABS @base",
|
"inherits": "BETA ABS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "MPYyfCKMsJZy8GaY",
|
"setting_id": "BABB00_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"20"
|
"20"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ABS @BBL X1C",
|
"name": "BETA ABS @BBL X1C",
|
||||||
"inherits": "BETA ABS @base",
|
"inherits": "BETA ABS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "vMA7EhgNDT4MwMRr",
|
"setting_id": "BABB00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"60"
|
"60"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "BETA ABS @base",
|
||||||
|
"inherits": "fdm_filament_abs",
|
||||||
|
"from": "system",
|
||||||
|
"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": [
|
||||||
|
"24.99"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.95"
|
||||||
|
],
|
||||||
|
"filament_vendor": [
|
||||||
|
"BETA"
|
||||||
|
],
|
||||||
|
"impact_strength_z": [
|
||||||
|
"7.4"
|
||||||
|
]
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ASA @BBL A1 0.4 nozzle",
|
"name": "BETA ASA @BBL A1 0.4 nozzle",
|
||||||
"inherits": "BETA ASA @base",
|
"inherits": "BETA ASA @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "LevRG7t9mTlEseaB",
|
"setting_id": "BASB00_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"60"
|
"60"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ASA @BBL H2D 0.4 nozzle",
|
"name": "BETA ASA @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA ASA @base",
|
"inherits": "BETA ASA @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "3NBkWTXmqi8eRUhi",
|
"setting_id": "BASB00_13",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"65"
|
"65"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA ASA @BBL X1C 0.4 nozzle",
|
"name": "BETA ASA @BBL X1C 0.4 nozzle",
|
||||||
"inherits": "BETA ASA @base",
|
"inherits": "BETA ASA @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "0nWTEZkH7NKXgCib",
|
"setting_id": "BASB00_02",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"60"
|
"60"
|
||||||
-48
@@ -53,53 +53,5 @@
|
|||||||
],
|
],
|
||||||
"textured_plate_temp_initial_layer": [
|
"textured_plate_temp_initial_layer": [
|
||||||
"100"
|
"100"
|
||||||
],
|
|
||||||
"activate_air_filtration": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"slow_down_min_speed": [
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
"temperature_vitrification": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"filament_start_gcode": [
|
|
||||||
"; Filament gcode\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"200"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"8.0",
|
|
||||||
"12",
|
|
||||||
"8.0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"100"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"85"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"80",
|
|
||||||
"65",
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"85"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA HIPS @BBL H2D",
|
"name": "BETA HIPS @BBL H2D",
|
||||||
"inherits": "BETA HIPS @base",
|
"inherits": "BETA HIPS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "9nN2uWxlYH1c507A",
|
"setting_id": "BHIB00_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_deretraction_speed": [
|
"filament_deretraction_speed": [
|
||||||
"nil",
|
"nil",
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA HIPS @BBL X1C",
|
"name": "BETA HIPS @BBL X1C",
|
||||||
"inherits": "BETA HIPS @base",
|
"inherits": "BETA HIPS @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "mTcT8sCciWyX5enc",
|
"setting_id": "BHIB00_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"8",
|
"8",
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "BETA HIPS @base",
|
||||||
|
"inherits": "fdm_filament_hips",
|
||||||
|
"from": "system",
|
||||||
|
"filament_id": "OFlmxlDG",
|
||||||
|
"instantiation": "false",
|
||||||
|
"filament_is_support": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"filament_vendor": [
|
||||||
|
"BETA"
|
||||||
|
]
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PAHT-CF @BBL H2D",
|
"name": "BETA PAHT-CF @BBL H2D",
|
||||||
"inherits": "BETA PAHT-CF @base",
|
"inherits": "BETA PAHT-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "YbYCVQd5IR0sQR8S",
|
"setting_id": "BPAB00_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"60"
|
"60"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PAHT-CF @BBL P1P",
|
"name": "BETA PAHT-CF @BBL P1P",
|
||||||
"inherits": "BETA PAHT-CF @base",
|
"inherits": "BETA PAHT-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "5O5fzmFrT3O1k1H0",
|
"setting_id": "BPAB00_10",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_flow_ratio": [
|
"filament_flow_ratio": [
|
||||||
"0.96",
|
"0.96",
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PAHT-CF @BBL X1C",
|
"name": "BETA PAHT-CF @BBL X1C",
|
||||||
"inherits": "BETA PAHT-CF @base",
|
"inherits": "BETA PAHT-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "gB5HLYTDCooFy2W5",
|
"setting_id": "BPAB00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"chamber_temperatures": [
|
"chamber_temperatures": [
|
||||||
"60"
|
"60"
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "BETA PAHT-CF @base",
|
||||||
|
"inherits": "fdm_filament_pa",
|
||||||
|
"from": "system",
|
||||||
|
"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": [
|
||||||
|
"5"
|
||||||
|
],
|
||||||
|
"fan_max_speed": [
|
||||||
|
"30"
|
||||||
|
],
|
||||||
|
"fan_min_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"filament_cost": [
|
||||||
|
"94.99"
|
||||||
|
],
|
||||||
|
"filament_density": [
|
||||||
|
"1.06"
|
||||||
|
],
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.96"
|
||||||
|
],
|
||||||
|
"filament_type": [
|
||||||
|
"PA-CF"
|
||||||
|
],
|
||||||
|
"filament_vendor": [
|
||||||
|
"BETA"
|
||||||
|
],
|
||||||
|
"full_fan_speed_layer": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"impact_strength_z": [
|
||||||
|
"13.3"
|
||||||
|
],
|
||||||
|
"overhang_fan_speed": [
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"overhang_fan_threshold": [
|
||||||
|
"0%"
|
||||||
|
],
|
||||||
|
"temperature_vitrification": [
|
||||||
|
"180"
|
||||||
|
]
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PEBA 90A @BBL A1",
|
"name": "BETA PEBA 90A @BBL A1",
|
||||||
"inherits": "BETA PEBA 90A @base",
|
"inherits": "BETA PEBA 90A @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "A57Sbar56Ah1NiU7",
|
"setting_id": "BPBB00_04",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_density": [
|
"filament_density": [
|
||||||
"1.22"
|
"1.22"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PEBA 90A @BBL A1M",
|
"name": "BETA PEBA 90A @BBL A1M",
|
||||||
"inherits": "BETA PEBA 90A @base",
|
"inherits": "BETA PEBA 90A @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "OoLkWS147R0AasZc",
|
"setting_id": "BPBB00_05",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_density": [
|
"filament_density": [
|
||||||
"1.22"
|
"1.22"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PEBA 90A @BBL H2D",
|
"name": "BETA PEBA 90A @BBL H2D",
|
||||||
"inherits": "BETA PEBA 90A @base",
|
"inherits": "BETA PEBA 90A @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "91b8WTzvOky9wAVK",
|
"setting_id": "BPBB00_02",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"additional_cooling_fan_speed": [
|
"additional_cooling_fan_speed": [
|
||||||
"100"
|
"100"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PEBA 90A @BBL P1P",
|
"name": "BETA PEBA 90A @BBL P1P",
|
||||||
"inherits": "BETA PEBA 90A @base",
|
"inherits": "BETA PEBA 90A @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "ydudEBLRmj1WSXqB",
|
"setting_id": "BPBB00_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"2.8",
|
"2.8",
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PEBA 90A @BBL X1C",
|
"name": "BETA PEBA 90A @BBL X1C",
|
||||||
"inherits": "BETA PEBA 90A @base",
|
"inherits": "BETA PEBA 90A @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "F1hTal3M92tBjv2N",
|
"setting_id": "BPBB00_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"2.8",
|
"2.8",
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "BETA PEBA 90A @base",
|
||||||
|
"inherits": "fdm_filament_tpu",
|
||||||
|
"from": "system",
|
||||||
|
"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": [
|
||||||
|
"59.99"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"2.8"
|
||||||
|
],
|
||||||
|
"filament_vendor": [
|
||||||
|
"BETA"
|
||||||
|
],
|
||||||
|
"impact_strength_z": [
|
||||||
|
"87.3"
|
||||||
|
],
|
||||||
|
"nozzle_temperature": [
|
||||||
|
"225"
|
||||||
|
],
|
||||||
|
"nozzle_temperature_initial_layer": [
|
||||||
|
"225"
|
||||||
|
],
|
||||||
|
"nozzle_temperature_range_high": [
|
||||||
|
"240"
|
||||||
|
],
|
||||||
|
"slow_down_layer_time": [
|
||||||
|
"14"
|
||||||
|
]
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG @BBL A1",
|
"name": "BETA PETG @BBL A1",
|
||||||
"inherits": "BETA PETG @base",
|
"inherits": "BETA PETG @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "EpYzxZwVHvLaseku",
|
"setting_id": "BPGB00_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG @base",
|
"inherits": "BETA PETG @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "5V0hyhzFoDU8Tfwm",
|
"setting_id": "BPGB00_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG @base",
|
"inherits": "BETA PETG @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "KnKvUsD4rSpQU413",
|
"setting_id": "BPGB00_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG @BBL X1C",
|
"name": "BETA PETG @BBL X1C",
|
||||||
"inherits": "BETA PETG @base",
|
"inherits": "BETA PETG @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "uM6wHdt0N5ftZRge",
|
"setting_id": "BPGB00_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Fluorescence @BBL A1",
|
"name": "BETA PETG Fluorescence @BBL A1",
|
||||||
"inherits": "BETA PETG Fluorescence @base",
|
"inherits": "BETA PETG Fluorescence @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "ZtyTtAWsZnLGsM0O",
|
"setting_id": "BPGB02_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Fluorescence @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Fluorescence @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Fluorescence @base",
|
"inherits": "BETA PETG Fluorescence @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "VUSunTT0OJa7iOSd",
|
"setting_id": "BPGB02_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Fluorescence @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Fluorescence @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Fluorescence @base",
|
"inherits": "BETA PETG Fluorescence @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "JHg4y0pxAOtoJSuw",
|
"setting_id": "BPGB02_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Fluorescence @BBL X1C",
|
"name": "BETA PETG Fluorescence @BBL X1C",
|
||||||
"inherits": "BETA PETG Fluorescence @base",
|
"inherits": "BETA PETG Fluorescence @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "pCetfFvyLLw3vS2j",
|
"setting_id": "BPGB02_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glitter @BBL A1",
|
"name": "BETA PETG Glitter @BBL A1",
|
||||||
"inherits": "BETA PETG Glitter @base",
|
"inherits": "BETA PETG Glitter @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "cz5dC7OrXDlX1Ctj",
|
"setting_id": "BPGB03_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glitter @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Glitter @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Glitter @base",
|
"inherits": "BETA PETG Glitter @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "PozWnOfZ2l7HqTpx",
|
"setting_id": "BPGB03_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glitter @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Glitter @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Glitter @base",
|
"inherits": "BETA PETG Glitter @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "ijW4zvNAQ3DIK984",
|
"setting_id": "BPGB03_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glitter @BBL X1C",
|
"name": "BETA PETG Glitter @BBL X1C",
|
||||||
"inherits": "BETA PETG Glitter @base",
|
"inherits": "BETA PETG Glitter @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "UI220qldPoLY8VZN",
|
"setting_id": "BPGB03_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glow @BBL A1",
|
"name": "BETA PETG Glow @BBL A1",
|
||||||
"inherits": "BETA PETG Glow @base",
|
"inherits": "BETA PETG Glow @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "LudMQeiSJOLw0Aoy",
|
"setting_id": "BPGB04_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glow @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Glow @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Glow @base",
|
"inherits": "BETA PETG Glow @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "cl1Rl9hgrahhhSd3",
|
"setting_id": "BPGB04_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glow @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Glow @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Glow @base",
|
"inherits": "BETA PETG Glow @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "3s9w3mH6M4OdbrUV",
|
"setting_id": "BPGB04_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Glow @BBL X1C",
|
"name": "BETA PETG Glow @BBL X1C",
|
||||||
"inherits": "BETA PETG Glow @base",
|
"inherits": "BETA PETG Glow @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "wv5FRKdnsHaIFA7L",
|
"setting_id": "BPGB04_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Gradient @BBL A1",
|
"name": "BETA PETG Gradient @BBL A1",
|
||||||
"inherits": "BETA PETG Gradient @base",
|
"inherits": "BETA PETG Gradient @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "L3hZggzEZUgUv0Qv",
|
"setting_id": "BPGB05_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Gradient @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Gradient @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Gradient @base",
|
"inherits": "BETA PETG Gradient @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "zsITnsNFRG7IE6sR",
|
"setting_id": "BPGB05_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Gradient @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Gradient @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Gradient @base",
|
"inherits": "BETA PETG Gradient @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "GqmCuPg6baUxeoYS",
|
"setting_id": "BPGB05_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Gradient @BBL X1C",
|
"name": "BETA PETG Gradient @BBL X1C",
|
||||||
"inherits": "BETA PETG Gradient @base",
|
"inherits": "BETA PETG Gradient @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "oYJjUiaCI4UBZ0ur",
|
"setting_id": "BPGB05_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG HF @BBL A1",
|
"name": "BETA PETG HF @BBL A1",
|
||||||
"inherits": "BETA PETG HF @base",
|
"inherits": "BETA PETG HF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "T2Ea25pM2u9BM7Oa",
|
"setting_id": "BPGB06_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"15"
|
"15"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG HF @BBL A1M",
|
"name": "BETA PETG HF @BBL A1M",
|
||||||
"inherits": "BETA PETG HF @base",
|
"inherits": "BETA PETG HF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "nO5R86dkDle1m5Pq",
|
"setting_id": "BPGB06_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"15"
|
"15"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG HF @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG HF @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG HF @base",
|
"inherits": "BETA PETG HF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "YOBguayM9PiwkpfT",
|
"setting_id": "BPGB06_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"counter_coef_2": [
|
"counter_coef_2": [
|
||||||
"0.007"
|
"0.007"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG HF @BBL X1C",
|
"name": "BETA PETG HF @BBL X1C",
|
||||||
"inherits": "BETA PETG HF @base",
|
"inherits": "BETA PETG HF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "EG3h0IHVO1yyVNMs",
|
"setting_id": "BPGB06_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -85,48 +85,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Heat Color Change @BBL A1",
|
"name": "BETA PETG Heat Color Change @BBL A1",
|
||||||
"inherits": "BETA PETG Heat Color Change @base",
|
"inherits": "BETA PETG Heat Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "ZhHASdXFywqbRuBf",
|
"setting_id": "BPGB01_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Heat Color Change @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Heat Color Change @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Heat Color Change @base",
|
"inherits": "BETA PETG Heat Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "YiFgzCJDAOW9YSjZ",
|
"setting_id": "BPGB01_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Heat Color Change @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Heat Color Change @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Heat Color Change @base",
|
"inherits": "BETA PETG Heat Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "DpWgpTiKdm70Xt1i",
|
"setting_id": "BPGB01_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Heat Color Change @BBL X1C",
|
"name": "BETA PETG Heat Color Change @BBL X1C",
|
||||||
"inherits": "BETA PETG Heat Color Change @base",
|
"inherits": "BETA PETG Heat Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "3lJe6ftSHQDkQZ1S",
|
"setting_id": "BPGB01_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Marble @BBL A1",
|
"name": "BETA PETG Marble @BBL A1",
|
||||||
"inherits": "BETA PETG Marble @base",
|
"inherits": "BETA PETG Marble @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "tSCDuE4dE44PyIwb",
|
"setting_id": "BPGB07_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Marble @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Marble @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Marble @base",
|
"inherits": "BETA PETG Marble @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "n6dguOo5ZleD6Ec4",
|
"setting_id": "BPGB07_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Marble @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Marble @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Marble @base",
|
"inherits": "BETA PETG Marble @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "RxCTxdvym4iNOB5j",
|
"setting_id": "BPGB07_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Marble @BBL X1C",
|
"name": "BETA PETG Marble @BBL X1C",
|
||||||
"inherits": "BETA PETG Marble @base",
|
"inherits": "BETA PETG Marble @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "3BgsPAgilo1MgtOV",
|
"setting_id": "BPGB07_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Matte @BBL A1",
|
"name": "BETA PETG Matte @BBL A1",
|
||||||
"inherits": "BETA PETG Matte @base",
|
"inherits": "BETA PETG Matte @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "zYkrzQk11C98R31F",
|
"setting_id": "BPGB08_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Matte @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Matte @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Matte @base",
|
"inherits": "BETA PETG Matte @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "rzX5oP4037Ex5Chh",
|
"setting_id": "BPGB08_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Matte @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Matte @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Matte @base",
|
"inherits": "BETA PETG Matte @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "sqz8Vluq7GMd3siv",
|
"setting_id": "BPGB08_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Matte @BBL X1C",
|
"name": "BETA PETG Matte @BBL X1C",
|
||||||
"inherits": "BETA PETG Matte @base",
|
"inherits": "BETA PETG Matte @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "NXgqYCqHeVCgFF3I",
|
"setting_id": "BPGB08_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Metallic @BBL A1",
|
"name": "BETA PETG Metallic @BBL A1",
|
||||||
"inherits": "BETA PETG Metallic @base",
|
"inherits": "BETA PETG Metallic @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "1baUIJ3P8n6DcyRc",
|
"setting_id": "BPGB09_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Metallic @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG Metallic @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Metallic @base",
|
"inherits": "BETA PETG Metallic @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "LMsVDqsChBksLNqL",
|
"setting_id": "BPGB09_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Metallic @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Metallic @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Metallic @base",
|
"inherits": "BETA PETG Metallic @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "giq8BW6qcwz91e4C",
|
"setting_id": "BPGB09_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Metallic @BBL X1C",
|
"name": "BETA PETG Metallic @BBL X1C",
|
||||||
"inherits": "BETA PETG Metallic @base",
|
"inherits": "BETA PETG Metallic @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "tZzoc2LdgWkpEiox",
|
"setting_id": "BPGB09_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Transparent @BBL A1",
|
"name": "BETA PETG Transparent @BBL A1",
|
||||||
"inherits": "BETA PETG Transparent @base",
|
"inherits": "BETA PETG Transparent @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "86loYV5S4bgO2FOx",
|
"setting_id": "BPGB10_05",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_long_retractions_when_cut": [
|
"filament_long_retractions_when_cut": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Transparent @BBL A1M",
|
"name": "BETA PETG Transparent @BBL A1M",
|
||||||
"inherits": "BETA PETG Transparent @base",
|
"inherits": "BETA PETG Transparent @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "c2xTYO07RC2G2xsv",
|
"setting_id": "BPGB10_02",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_long_retractions_when_cut": [
|
"filament_long_retractions_when_cut": [
|
||||||
"1"
|
"1"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Transparent @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG Transparent @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG Transparent @base",
|
"inherits": "BETA PETG Transparent @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "GkC5T0RX0meiLVKg",
|
"setting_id": "BPGB10_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_deretraction_speed": [
|
"filament_deretraction_speed": [
|
||||||
"nil",
|
"nil",
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG Transparent @BBL X1C",
|
"name": "BETA PETG Transparent @BBL X1C",
|
||||||
"inherits": "BETA PETG Transparent @base",
|
"inherits": "BETA PETG Transparent @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "doyjzbrEn9akgjvG",
|
"setting_id": "BPGB10_00",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_long_retractions_when_cut": [
|
"filament_long_retractions_when_cut": [
|
||||||
"1",
|
"1",
|
||||||
-43
@@ -80,48 +80,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG UV Color Change @BBL A1",
|
"name": "BETA PETG UV Color Change @BBL A1",
|
||||||
"inherits": "BETA PETG UV Color Change @base",
|
"inherits": "BETA PETG UV Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "CeepF0rRLZ5fzBwm",
|
"setting_id": "BPGB11_06",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG UV Color Change @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG UV Color Change @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG UV Color Change @base",
|
"inherits": "BETA PETG UV Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "Atb1esrVdoWBK97e",
|
"setting_id": "BPGB11_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"50"
|
"50"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG UV Color Change @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG UV Color Change @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG UV Color Change @base",
|
"inherits": "BETA PETG UV Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "Ic0NUfwLmR0NSh5q",
|
"setting_id": "BPGB11_09",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_max_speed": [
|
"fan_max_speed": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG UV Color Change @BBL X1C",
|
"name": "BETA PETG UV Color Change @BBL X1C",
|
||||||
"inherits": "BETA PETG UV Color Change @base",
|
"inherits": "BETA PETG UV Color Change @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "BUKCpukEUmocfz3v",
|
"setting_id": "BPGB11_01",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"20"
|
"20"
|
||||||
-43
@@ -92,48 +92,5 @@
|
|||||||
],
|
],
|
||||||
"filament_start_gcode": [
|
"filament_start_gcode": [
|
||||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
"; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||||
],
|
|
||||||
"close_additional_fan_first_x_layers": [
|
|
||||||
"3"
|
|
||||||
],
|
|
||||||
"retraction_distances_when_ec": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_end_gcode": [
|
|
||||||
"; filament end gcode \n\n"
|
|
||||||
],
|
|
||||||
"volumetric_speed_coefficients": [
|
|
||||||
"0 0 0 0 0 0"
|
|
||||||
],
|
|
||||||
"filament_adhesiveness_category": [
|
|
||||||
"300"
|
|
||||||
],
|
|
||||||
"filament_dev_chamber_drying_bed_temperature": [
|
|
||||||
"80"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_time": [
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_ams_limitations": [
|
|
||||||
"1",
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_heat_distortion_temperature": [
|
|
||||||
"75"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_cooling_temperature": [
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_ams_drying_temperature": [
|
|
||||||
"65",
|
|
||||||
"65",
|
|
||||||
"55",
|
|
||||||
"55"
|
|
||||||
],
|
|
||||||
"filament_dev_drying_softening_temperature": [
|
|
||||||
"60"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG-CF @BBL A1 0.4 nozzle",
|
"name": "BETA PETG-CF @BBL A1 0.4 nozzle",
|
||||||
"inherits": "BETA PETG-CF @base",
|
"inherits": "BETA PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "2ysJdw1MuW8VLmny",
|
"setting_id": "BPGB12_05",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG-CF @BBL A1M 0.4 nozzle",
|
"name": "BETA PETG-CF @BBL A1M 0.4 nozzle",
|
||||||
"inherits": "BETA PETG-CF @base",
|
"inherits": "BETA PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "eZsa6noZZUahQeBp",
|
"setting_id": "BPGB12_04",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"9"
|
"9"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG-CF @BBL H2D 0.4 nozzle",
|
"name": "BETA PETG-CF @BBL H2D 0.4 nozzle",
|
||||||
"inherits": "BETA PETG-CF @base",
|
"inherits": "BETA PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "YRUDQs5jE1d1BGTY",
|
"setting_id": "BPGB12_08",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"counter_coef_2": [
|
"counter_coef_2": [
|
||||||
"0.00565"
|
"0.00565"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG-CF @BBL P1P 0.4 nozzle",
|
"name": "BETA PETG-CF @BBL P1P 0.4 nozzle",
|
||||||
"inherits": "BETA PETG-CF @base",
|
"inherits": "BETA PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "i1OjgC3I96a1Trb8",
|
"setting_id": "BPGB12_03",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"30"
|
"30"
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
"name": "BETA PETG-CF @BBL X1C 0.4 nozzle",
|
"name": "BETA PETG-CF @BBL X1C 0.4 nozzle",
|
||||||
"inherits": "BETA PETG-CF @base",
|
"inherits": "BETA PETG-CF @base",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "0p4213iz0b9fbeKO",
|
"setting_id": "BPGB12_02",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"30"
|
"30"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user