mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-28 19:31:22 +00:00
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6d89d6978 | ||
|
|
abecef53b0 | ||
|
|
44d5a22a32 | ||
|
|
dec146f1e6 | ||
|
|
a9fec0ffc4 | ||
|
|
9ab6bbebf0 |
@@ -1,7 +1,5 @@
|
|||||||
name: Daily OFL OTA Update
|
name: Daily OFL OTA Update
|
||||||
|
|
||||||
run-name: Daily OFL OTA Update [OFL barrier]
|
|
||||||
|
|
||||||
# This workflow is intended for creating and publishing the OrcaFilamentLibrary (OFL) OPC package to
|
# This workflow is intended for creating and publishing the OrcaFilamentLibrary (OFL) OPC package to
|
||||||
# https://github.com/OrcaSlicer/orcaslicer-profiles, which generates an OTA update.
|
# https://github.com/OrcaSlicer/orcaslicer-profiles, which generates an OTA update.
|
||||||
# This cronjob runs daily at 00:00 UTC every day and scans main plus every release/vX.Y.Z branch for
|
# This cronjob runs daily at 00:00 UTC every day and scans main plus every release/vX.Y.Z branch for
|
||||||
@@ -14,9 +12,9 @@ run-name: Daily OFL OTA Update [OFL barrier]
|
|||||||
# vendor-dispatch path is also what makes post_merge_profiles.yml call the OTA auto-publish API after
|
# vendor-dispatch path is also what makes post_merge_profiles.yml call the OTA auto-publish API after
|
||||||
# uploading - see post_merge_profiles.yml for both sides of that contract.
|
# uploading - see post_merge_profiles.yml for both sides of that contract.
|
||||||
#
|
#
|
||||||
# Each run captures a timestamp, dispatches the needed OFL publishers, waits for
|
# At the start of each run, the pending-publish table is cleared up to a captured
|
||||||
# all of them to finish, then clears the pending-publish table once. Changes merged
|
# timestamp (POST /api/v1/ota/ofl/pending/clear?timestamp=...). Changes merged after
|
||||||
# after that timestamp remain pending for the next run.
|
# that timestamp remain pending for the next run.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
@@ -36,14 +34,32 @@ jobs:
|
|||||||
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' }}
|
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' }}
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Capture start timestamp
|
- name: Capture start timestamp and clear OFL pending queue
|
||||||
id: start
|
id: start
|
||||||
shell: bash
|
shell: bash
|
||||||
|
env:
|
||||||
|
OTA_API_BASE_URL: ${{ vars.OTA_API_BASE_URL }}
|
||||||
|
OTA_API_KEY: ${{ secrets.OFL_OTA_PUBLISH_KEY }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
[ -n "$OTA_API_BASE_URL" ] || { echo "::error::vars.OTA_API_BASE_URL is not set"; exit 1; }
|
||||||
|
[ -n "$OTA_API_KEY" ] || { echo "::error::secrets.OFL_OTA_PUBLISH_KEY is not set"; exit 1; }
|
||||||
|
|
||||||
timestamp="$(date -u +%s)"
|
timestamp="$(date -u +%s)"
|
||||||
echo "timestamp=$timestamp" >> "$GITHUB_OUTPUT"
|
echo "timestamp=$timestamp" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
resp_file="$RUNNER_TEMP/ota-pending-clear-response.json"
|
||||||
|
status="$(curl -sS -o "$resp_file" -w '%{http_code}' -X POST \
|
||||||
|
"${OTA_API_BASE_URL%/}/api/v1/ota/ofl/pending/clear?timestamp=$timestamp" \
|
||||||
|
-H "Authorization: Bearer $OTA_API_KEY")"
|
||||||
|
body="$(cat "$resp_file")"
|
||||||
|
echo "$body"
|
||||||
|
|
||||||
|
if [ "$status" != "200" ]; then
|
||||||
|
echo "::error::OTA pending-clear call failed with HTTP $status"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v7
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
@@ -68,21 +84,27 @@ jobs:
|
|||||||
| grep -E '^(main|release/v[0-9]+\.[0-9]+\.[0-9]+)$' | sort -u
|
| grep -E '^(main|release/v[0-9]+\.[0-9]+\.[0-9]+)$' | sort -u
|
||||||
)
|
)
|
||||||
|
|
||||||
# The cron run is the checkpoint: a successful run means every
|
|
||||||
# dispatched branch publisher completed and the pending queue was
|
|
||||||
# cleared. Manual or push-triggered post_merge_profiles runs are not
|
|
||||||
# checkpoints for this scan.
|
|
||||||
successful_cron_runs="$(gh api --method GET \
|
|
||||||
"repos/${{ github.repository }}/actions/workflows/ofl-ota-cronjob.yml/runs" \
|
|
||||||
-f status=success -f branch=main -f per_page=100 --paginate \
|
|
||||||
--jq '.workflow_runs[] | select((.display_title // "") | contains("[OFL barrier]"))')"
|
|
||||||
since="$(jq -rs 'sort_by(.run_started_at) | last.run_started_at // empty' <<< "$successful_cron_runs")"
|
|
||||||
|
|
||||||
for branch in "${branches[@]}"; do
|
for branch in "${branches[@]}"; do
|
||||||
echo "::group::$branch"
|
echo "::group::$branch"
|
||||||
|
|
||||||
|
# post_merge_profiles.yml's own run history, not this workflow's: this
|
||||||
|
# workflow only ever runs against main (schedule, or workflow_dispatch
|
||||||
|
# --ref main), so its head branch never varies - filtering ITS history
|
||||||
|
# by $branch would never match anything except main. post_merge_profiles.yml
|
||||||
|
# genuinely runs per-branch (this dispatch below sets --ref "$branch"),
|
||||||
|
# so its history is the real per-branch checkpoint. It also means a
|
||||||
|
# failed publish naturally gets retried tomorrow: the checkpoint only
|
||||||
|
# advances on a run that actually succeeded.
|
||||||
|
# --method GET is required, not cosmetic: gh api defaults to POST
|
||||||
|
# whenever -f fields are present unless a method is given
|
||||||
|
# explicitly, and POST on this list-runs endpoint 404s - confirmed
|
||||||
|
# on real Actions infrastructure, not just reasoned about.
|
||||||
|
since="$(gh api --method GET "repos/${{ github.repository }}/actions/workflows/post_merge_profiles.yml/runs" \
|
||||||
|
-f status=success -f branch="$branch" -f per_page=1 \
|
||||||
|
--jq '.workflow_runs[0].run_started_at // empty')"
|
||||||
|
|
||||||
if [ -z "$since" ]; then
|
if [ -z "$since" ]; then
|
||||||
echo "No prior successful OFL cron run; checking $branch through $SCAN_UNTIL."
|
echo "No prior successful run for $branch; checking OFL changes up to $SCAN_UNTIL."
|
||||||
changed_files="$(git log --until="$SCAN_UNTIL" --name-only --pretty=format: "origin/$branch" -- \
|
changed_files="$(git log --until="$SCAN_UNTIL" --name-only --pretty=format: "origin/$branch" -- \
|
||||||
resources/profiles/OrcaFilamentLibrary resources/profiles/OrcaFilamentLibrary.json \
|
resources/profiles/OrcaFilamentLibrary resources/profiles/OrcaFilamentLibrary.json \
|
||||||
| sed '/^$/d')"
|
| sed '/^$/d')"
|
||||||
@@ -102,98 +124,16 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$changed" = true ]; then
|
if [ "$changed" = true ]; then
|
||||||
dispatch_id="${GITHUB_RUN_ID}-${branch//\//-}"
|
# Tolerate a per-branch failure (e.g. a pre-existing release branch
|
||||||
# Record successful dispatches for the barrier step below.
|
# whose post_merge_profiles.yml predates the vendor/auto_publish
|
||||||
# Branches whose workflow predates workflow_dispatch are skipped
|
# inputs) rather than aborting the whole scan under set -e.
|
||||||
# with a warning, as they were before the barrier was added.
|
if ! gh workflow run post_merge_profiles.yml \
|
||||||
if gh workflow run post_merge_profiles.yml \
|
|
||||||
--repo "${{ github.repository }}" \
|
--repo "${{ github.repository }}" \
|
||||||
--ref "$branch" \
|
--ref "$branch" \
|
||||||
-f vendor="$VENDOR" -f auto_publish=true \
|
-f vendor="$VENDOR" -f auto_publish=true; then
|
||||||
-f ofl_cron_dispatch_id="$dispatch_id"; then
|
echo "::warning::failed to dispatch post_merge_profiles.yml for $branch - its post_merge_profiles.yml at this ref may predate the vendor/auto_publish inputs"
|
||||||
printf '%s\t%s\n' "$branch" "$dispatch_id" >> "$RUNNER_TEMP/ofl-dispatches.tsv"
|
|
||||||
else
|
|
||||||
echo "::warning::skipping $branch because post_merge_profiles.yml could not be dispatched at that ref"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: Wait for OFL publishers
|
|
||||||
id: wait
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
DISPATCHES_FILE: ${{ runner.temp }}/ofl-dispatches.tsv
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
if [ ! -s "$DISPATCHES_FILE" ]; then
|
|
||||||
echo "No OFL publisher workflows were dispatched; pending queue will not be cleared."
|
|
||||||
echo "publishers_dispatched=false" >> "$GITHUB_OUTPUT"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
: > "$RUNNER_TEMP/ofl-run-ids.tsv"
|
|
||||||
while IFS=$'\t' read -r branch dispatch_id; do
|
|
||||||
[ -n "$branch" ] || continue
|
|
||||||
echo "Waiting for OFL publisher on $branch ($dispatch_id)"
|
|
||||||
|
|
||||||
run_id=""
|
|
||||||
for _ in {1..120}; do
|
|
||||||
runs_json="$(gh api --method GET \
|
|
||||||
"repos/${{ github.repository }}/actions/workflows/post_merge_profiles.yml/runs" \
|
|
||||||
-f branch="$branch" -f event=workflow_dispatch -f per_page=100)"
|
|
||||||
run_id="$(jq -r --arg marker "[OFL cron $dispatch_id]" \
|
|
||||||
'[.workflow_runs[] | select((.display_title // "") | contains($marker))] \
|
|
||||||
| sort_by(.created_at) | last | .id // empty' <<< "$runs_json")"
|
|
||||||
[ -n "$run_id" ] && break
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "$run_id" ]; then
|
|
||||||
echo "::error::could not find dispatched post_merge_profiles run for $branch ($dispatch_id)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printf '%s\t%s\n' "$branch" "$run_id" >> "$RUNNER_TEMP/ofl-run-ids.tsv"
|
|
||||||
done < "$DISPATCHES_FILE"
|
|
||||||
|
|
||||||
all_success=true
|
|
||||||
while IFS=$'\t' read -r branch run_id; do
|
|
||||||
[ -n "$run_id" ] || continue
|
|
||||||
echo "Watching OFL publisher run $run_id for $branch"
|
|
||||||
if ! gh run watch "$run_id" --repo "${{ github.repository }}" --exit-status; then
|
|
||||||
all_success=false
|
|
||||||
fi
|
|
||||||
done < "$RUNNER_TEMP/ofl-run-ids.tsv"
|
|
||||||
|
|
||||||
if [ "$all_success" != true ]; then
|
|
||||||
echo "::error::one or more OFL publisher workflows failed; pending queue will not be cleared"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "publishers_dispatched=true" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
- name: Clear OFL pending queue
|
|
||||||
if: steps.wait.outputs.publishers_dispatched == 'true'
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
OTA_API_BASE_URL: ${{ vars.OTA_API_BASE_URL }}
|
|
||||||
OTA_API_KEY: ${{ secrets.OFL_OTA_PUBLISH_KEY }}
|
|
||||||
TIMESTAMP: ${{ steps.start.outputs.timestamp }}
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
[ -n "$OTA_API_BASE_URL" ] || { echo "::error::vars.OTA_API_BASE_URL is not set"; exit 1; }
|
|
||||||
[ -n "$OTA_API_KEY" ] || { echo "::error::secrets.OFL_OTA_PUBLISH_KEY is not set"; exit 1; }
|
|
||||||
|
|
||||||
resp_file="$RUNNER_TEMP/ota-pending-clear-response.json"
|
|
||||||
status="$(curl -sS -o "$resp_file" -w '%{http_code}' -X POST \
|
|
||||||
"${OTA_API_BASE_URL%/}/api/v1/ota/ofl/pending/clear?timestamp=$TIMESTAMP" \
|
|
||||||
-H "Authorization: Bearer $OTA_API_KEY")"
|
|
||||||
body="$(cat "$resp_file")"
|
|
||||||
echo "$body"
|
|
||||||
|
|
||||||
if [ "$status" != "200" ]; then
|
|
||||||
echo "::error::OTA pending-clear call failed with HTTP $status"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -1,14 +1,5 @@
|
|||||||
name: Post-merge profiles
|
name: Post-merge profiles
|
||||||
|
|
||||||
run-name: >-
|
|
||||||
Post-merge profiles${{
|
|
||||||
inputs.ofl_cron_dispatch_id != '' &&
|
|
||||||
inputs.vendor == 'OrcaFilamentLibrary' &&
|
|
||||||
(inputs.auto_publish == true || inputs.auto_publish == 'true') &&
|
|
||||||
format(' [OFL cron {0}]', inputs.ofl_cron_dispatch_id) ||
|
|
||||||
''
|
|
||||||
}}
|
|
||||||
|
|
||||||
# Push-triggered counterpart to check_profiles.yml (which only gates PRs). When a
|
# Push-triggered counterpart to check_profiles.yml (which only gates PRs). When a
|
||||||
# profile change lands on main or a release branch, rebuild the affected vendors'
|
# profile change lands on main or a release branch, rebuild the affected vendors'
|
||||||
# binary preset caches (<vendor>.opc) and publish each as a versioned ZIP asset on
|
# binary preset caches (<vendor>.opc) and publish each as a versioned ZIP asset on
|
||||||
@@ -68,12 +59,6 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
ofl_cron_dispatch_id:
|
|
||||||
description: >-
|
|
||||||
Unique marker supplied by the trusted OFL daily cron so it can find
|
|
||||||
and wait for this dispatched workflow run.
|
|
||||||
required: false
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
+1
-42
@@ -834,37 +834,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)
|
||||||
@@ -1145,7 +1114,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
|
||||||
@@ -1158,7 +1126,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
|
||||||
@@ -1182,10 +1149,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
|
||||||
@@ -1200,9 +1164,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
|
||||||
@@ -1332,8 +1293,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
@@ -164,7 +164,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
|
||||||
@@ -210,18 +210,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
|
||||||
@@ -255,14 +249,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"
|
||||||
@@ -276,7 +268,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
|
||||||
@@ -405,6 +396,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
|
||||||
@@ -415,12 +410,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
|
||||||
@@ -494,7 +483,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,80 @@
|
|||||||
|
# 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`, `shell` | what is drawn while dragging |
|
||||||
|
|
||||||
|
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 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.
|
||||||
|
- `ShellOnly` (`shell`) keeps every role but the sparse infill, internal solid infill, internal
|
||||||
|
bridge infill and gap fill, which lie under the skins or between the walls. Walls, top and
|
||||||
|
bottom surfaces, bridges, supports and the prime tower are drawn whole, so from outside the
|
||||||
|
print looks as it does at rest. The roles come from
|
||||||
|
the slicer, so the classification is exact wherever the slicer's is; what it cannot express is
|
||||||
|
the inside of the prime tower and of a support, which share one role with their outside and are
|
||||||
|
kept whole. A profile with no top or bottom shell layers, or no walls, leaves the infill on the
|
||||||
|
surface, so `GCodeViewer` turns the hiding off for such a print when it loads it, from the
|
||||||
|
print's default region settings; per-object overrides are not consulted.
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
## 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
|
|
||||||
+55
-155
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Blocks",
|
"name": "Blocks",
|
||||||
"version": "02.04.00.13",
|
"version": "02.04.00.04",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "Blocks configurations",
|
"description": "Blocks configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
@@ -43,8 +43,8 @@
|
|||||||
"sub_path": "process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.16mm Optimal 0.4 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.20mm Standard 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.20mm Standard 0.4 nozzle @Blocks",
|
||||||
"sub_path": "process/0.20mm Standard 0.4 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.20mm Standard 0.4 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.20mm Standard 0.4 nozzle @Blocks_RD50_V2",
|
"name": "0.20mm Standard 0.4 nozzle @Blocks_RD50_V2",
|
||||||
@@ -55,8 +55,8 @@
|
|||||||
"sub_path": "process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.20mm Standard 0.4 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.24mm Draft 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.24mm Draft 0.4 nozzle @Blocks",
|
||||||
"sub_path": "process/0.24mm Draft 0.4 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.24mm Draft 0.4 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.24mm Draft 0.4 nozzle @Blocks_RD50_V2",
|
"name": "0.24mm Draft 0.4 nozzle @Blocks_RD50_V2",
|
||||||
@@ -75,8 +75,8 @@
|
|||||||
"sub_path": "process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.28mm Extra Draft 0.4 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.30mm Extra Draft 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Extra Draft 0.4 nozzle @Blocks",
|
||||||
"sub_path": "process/0.30mm Extra Draft 0.4 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.30mm Extra Draft 0.4 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_process_common 0.6 nozzle",
|
"name": "fdm_process_common 0.6 nozzle",
|
||||||
@@ -111,8 +111,8 @@
|
|||||||
"sub_path": "process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.26mm Standard 0.6 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.30mm Standard 0.6 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Standard 0.6 nozzle @Blocks",
|
||||||
"sub_path": "process/0.30mm Standard 0.6 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.30mm Standard 0.6 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.32mm Draft 0.6 nozzle @Blocks_RD50_V2",
|
"name": "0.32mm Draft 0.6 nozzle @Blocks_RD50_V2",
|
||||||
@@ -131,12 +131,12 @@
|
|||||||
"sub_path": "process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.38mm Extra Draft 0.6 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.40mm Draft 0.6 nozzle @Blocks_Pro_S100",
|
"name": "0.40mm Draft 0.6 nozzle @Blocks",
|
||||||
"sub_path": "process/0.40mm Draft 0.6 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.40mm Draft 0.6 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.30mm Optimal 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Optimal 0.8 nozzle @Blocks",
|
||||||
"sub_path": "process/0.30mm Optimal 0.8 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.30mm Optimal 0.8 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.30mm Optimal 0.8 nozzle @Blocks_RD50_V2",
|
"name": "0.30mm Optimal 0.8 nozzle @Blocks_RD50_V2",
|
||||||
@@ -155,8 +155,8 @@
|
|||||||
"sub_path": "process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.38mm Standard 0.8 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.40mm Standard 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.40mm Standard 0.8 nozzle @Blocks",
|
||||||
"sub_path": "process/0.40mm Standard 0.8 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.40mm Standard 0.8 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.46mm Draft 0.8 nozzle @Blocks_RD50_V2",
|
"name": "0.46mm Draft 0.8 nozzle @Blocks_RD50_V2",
|
||||||
@@ -167,8 +167,8 @@
|
|||||||
"sub_path": "process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.46mm Draft 0.8 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.50mm Draft 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Draft 0.8 nozzle @Blocks",
|
||||||
"sub_path": "process/0.50mm Draft 0.8 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.50mm Draft 0.8 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.54mm Extra Draft 0.8 nozzle @Blocks_RD50_V2",
|
"name": "0.54mm Extra Draft 0.8 nozzle @Blocks_RD50_V2",
|
||||||
@@ -179,36 +179,36 @@
|
|||||||
"sub_path": "process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json"
|
"sub_path": "process/0.54mm Extra Draft 0.8 nozzle @Blocks_RF50.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.30mm Optimal 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Optimal 1.0 nozzle @Blocks",
|
||||||
"sub_path": "process/0.30mm Optimal 1.0 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.30mm Optimal 1.0 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.50mm Standard 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Standard 1.0 nozzle @Blocks",
|
||||||
"sub_path": "process/0.50mm Standard 1.0 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.50mm Standard 1.0 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.60mm Draft 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.60mm Draft 1.0 nozzle @Blocks",
|
||||||
"sub_path": "process/0.60mm Draft 1.0 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.60mm Draft 1.0 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.70mm Extra Draft 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.70mm Extra Draft 1.0 nozzle @Blocks",
|
||||||
"sub_path": "process/0.70mm Extra Draft 1.0 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.70mm Extra Draft 1.0 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.50mm Optimal 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Optimal 1.2 nozzle @Blocks",
|
||||||
"sub_path": "process/0.50mm Optimal 1.2 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.50mm Optimal 1.2 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.60mm Standard 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.60mm Standard 1.2 nozzle @Blocks",
|
||||||
"sub_path": "process/0.60mm Standard 1.2 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.60mm Standard 1.2 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.70mm Draft 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.70mm Draft 1.2 nozzle @Blocks",
|
||||||
"sub_path": "process/0.70mm Draft 1.2 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.70mm Draft 1.2 nozzle @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "0.80mm Extra Draft 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.80mm Extra Draft 1.2 nozzle @Blocks",
|
||||||
"sub_path": "process/0.80mm Extra Draft 1.2 nozzle @Blocks_Pro_S100.json"
|
"sub_path": "process/0.80mm Extra Draft 1.2 nozzle @Blocks.json"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"filament_list": [
|
"filament_list": [
|
||||||
@@ -249,148 +249,48 @@
|
|||||||
"sub_path": "filament/fdm_filament_tpu.json"
|
"sub_path": "filament/fdm_filament_tpu.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks ABS @base",
|
"name": "Generic ABS @Blocks",
|
||||||
"sub_path": "filament/Blocks ABS @base.json"
|
"sub_path": "filament/Generic ABS @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks ASA @base",
|
"name": "Generic ASA @Blocks",
|
||||||
"sub_path": "filament/Blocks ASA @base.json"
|
"sub_path": "filament/Generic ASA @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks ASA-CF @base",
|
"name": "Generic ASA-CF @Blocks",
|
||||||
"sub_path": "filament/Blocks ASA-CF @base.json"
|
"sub_path": "filament/Generic ASA-CF @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PA @base",
|
"name": "Generic PA @Blocks",
|
||||||
"sub_path": "filament/Blocks PA @base.json"
|
"sub_path": "filament/Generic PA @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PA-CF @base",
|
"name": "Generic PA-CF @Blocks",
|
||||||
"sub_path": "filament/Blocks PA-CF @base.json"
|
"sub_path": "filament/Generic PA-CF @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PC @base",
|
"name": "Generic PC @Blocks",
|
||||||
"sub_path": "filament/Blocks PC @base.json"
|
"sub_path": "filament/Generic PC @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PETG @base",
|
"name": "Generic PETG @Blocks",
|
||||||
"sub_path": "filament/Blocks PETG @base.json"
|
"sub_path": "filament/Generic PETG @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PLA @base",
|
"name": "Generic PLA @Blocks",
|
||||||
"sub_path": "filament/Blocks PLA @base.json"
|
"sub_path": "filament/Generic PLA @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PLA-CF @base",
|
"name": "Generic PLA-CF @Blocks",
|
||||||
"sub_path": "filament/Blocks PLA-CF @base.json"
|
"sub_path": "filament/Generic PLA-CF @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks PVA @base",
|
"name": "Generic PVA @Blocks",
|
||||||
"sub_path": "filament/Blocks PVA @base.json"
|
"sub_path": "filament/Generic PVA @Blocks.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blocks TPU @base",
|
"name": "Generic TPU @Blocks",
|
||||||
"sub_path": "filament/Blocks TPU @base.json"
|
"sub_path": "filament/Generic TPU @Blocks.json"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ABS @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks ABS @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ABS @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks ABS @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ASA @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks ASA @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ASA @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks ASA @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ASA-CF @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks ASA-CF @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks ASA-CF @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks ASA-CF @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PA @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PA @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PA @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PA @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PA-CF @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PA-CF @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PA-CF @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PA-CF @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PC @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PC @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PC @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PC @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PETG @Blocks_Pro_S100",
|
|
||||||
"sub_path": "filament/Blocks PETG @Blocks_Pro_S100.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PETG @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PETG @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PETG @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PETG @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PLA @Blocks_Pro_S100",
|
|
||||||
"sub_path": "filament/Blocks PLA @Blocks_Pro_S100.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PLA @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PLA @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PLA @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PLA @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PLA-CF @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PLA-CF @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PLA-CF @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PLA-CF @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PVA @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks PVA @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks PVA @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks PVA @Blocks_RF50.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks TPU @Blocks_Pro_S100",
|
|
||||||
"sub_path": "filament/Blocks TPU @Blocks_Pro_S100.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks TPU @Blocks_RD50_V2",
|
|
||||||
"sub_path": "filament/Blocks TPU @Blocks_RD50_V2.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blocks TPU @Blocks_RF50",
|
|
||||||
"sub_path": "filament/Blocks TPU @Blocks_RF50.json"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"machine_list": [
|
"machine_list": [
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ABS @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks ABS @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "qhQ0qQDGJgsueCAF",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic ABS;Generic ABS @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ABS @Blocks_RF50",
|
|
||||||
"inherits": "Blocks ABS @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "bGYMFFdKiROKuSiY",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ASA @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks ASA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "HW7xDXThvpVFbMq5",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic ASA;Generic ASA @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ASA @Blocks_RF50",
|
|
||||||
"inherits": "Blocks ASA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "lBW7SCsvawi4icNU",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ASA-CF @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks ASA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "x5ksnGLGGy1PgDns",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic ASA-CF;Generic ASA-CF @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks ASA-CF @Blocks_RF50",
|
|
||||||
"inherits": "Blocks ASA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "pcbd5qFiMZAvDPg1",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PA @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "gxD81n2jjrReLD29",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PA;Generic PA @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PA @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "PzKxRMDnQUzVWRer",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PA @base",
|
|
||||||
"inherits": "fdm_filament_pa",
|
|
||||||
"from": "system",
|
|
||||||
"filament_id": "OFidOgK4",
|
|
||||||
"instantiation": "false",
|
|
||||||
"filament_vendor": [
|
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.98"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"10"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PA-CF @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "EtbeKx3rbhUo1TtM",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PA-CF;Generic PA-CF @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PA-CF @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "udI8Q4X7HaPIaPt4",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PC @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PC @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "HLc0shWnKwJzSFyW",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PC;Generic PC @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PC @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PC @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "9a6bccZopMTeNHYu",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PC @base",
|
|
||||||
"inherits": "fdm_filament_pc",
|
|
||||||
"from": "system",
|
|
||||||
"filament_id": "OFlGY0MN",
|
|
||||||
"instantiation": "false",
|
|
||||||
"filament_vendor": [
|
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.94"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"10"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PETG @Blocks_Pro_S100",
|
|
||||||
"inherits": "Blocks PETG @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "AhMR49fcFqtrQ6hI",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS Pro S100 0.4 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.6 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.8 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.0 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PETG;Generic PETG @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PETG @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PETG @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "3v7ah1zVG8MERPSJ",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PETG @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PETG @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "S7weR19wo9meJ6Yz",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA @Blocks_Pro_S100",
|
|
||||||
"inherits": "Blocks PLA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "vWojuLYIfduLGFLL",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS Pro S100 0.4 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.6 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.8 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.0 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PLA;Generic PLA @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PLA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "y7y8NcXNdp17sJUs",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PLA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "jt1MJF4eZzkkscEJ",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA-CF @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PLA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "lhBtMKP1DmOB3HOI",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PLA-CF;Generic PLA-CF @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA-CF @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PLA-CF @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "6CU83mAyhcZ4FCPI",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PLA-CF @base",
|
|
||||||
"inherits": "fdm_filament_pla",
|
|
||||||
"from": "system",
|
|
||||||
"filament_id": "OF6FfwOP",
|
|
||||||
"instantiation": "false",
|
|
||||||
"filament_vendor": [
|
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.95"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
|
||||||
"PLA-CF"
|
|
||||||
],
|
|
||||||
"slow_down_layer_time": [
|
|
||||||
"7"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PVA @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks PVA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "hREDqwKF6qyKkakp",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic PVA;Generic PVA @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PVA @Blocks_RF50",
|
|
||||||
"inherits": "Blocks PVA @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "q6pKqHY7Iz4OZaAC",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks PVA @base",
|
|
||||||
"inherits": "fdm_filament_pva",
|
|
||||||
"from": "system",
|
|
||||||
"filament_id": "OFqcNuE1",
|
|
||||||
"instantiation": "false",
|
|
||||||
"filament_vendor": [
|
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.98"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
|
||||||
"20"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks TPU @Blocks_Pro_S100",
|
|
||||||
"inherits": "Blocks TPU @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "6Rkz2je91JRTRoTi",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS Pro S100 0.4 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.6 nozzle",
|
|
||||||
"BLOCKS Pro S100 0.8 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.0 nozzle",
|
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
|
||||||
],
|
|
||||||
"renamed_from": "Blocks Generic TPU;Generic TPU @Blocks"
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks TPU @Blocks_RD50_V2",
|
|
||||||
"inherits": "Blocks TPU @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "mkCqRQTtXldzoEUg",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RD50 V2 0.4 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.6 nozzle",
|
|
||||||
"BLOCKS RD50 V2 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "filament",
|
|
||||||
"name": "Blocks TPU @Blocks_RF50",
|
|
||||||
"inherits": "Blocks TPU @base",
|
|
||||||
"from": "system",
|
|
||||||
"setting_id": "bCCvu5Ow1JkwIrRR",
|
|
||||||
"instantiation": "true",
|
|
||||||
"compatible_printers": [
|
|
||||||
"BLOCKS RF50 0.4 nozzle",
|
|
||||||
"BLOCKS RF50 0.6 nozzle",
|
|
||||||
"BLOCKS RF50 0.8 nozzle"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
+13
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks ABS @base",
|
"name": "Generic ABS @Blocks",
|
||||||
"inherits": "fdm_filament_abs",
|
"inherits": "fdm_filament_abs",
|
||||||
|
"renamed_from": "Blocks Generic ABS",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OFBBhiX8",
|
"setting_id": "TL1Q1kA4t36GGObG",
|
||||||
"instantiation": "false",
|
"filament_id": "OFY9muEs",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
"filament_flow_ratio": [
|
||||||
"0.95"
|
"0.95"
|
||||||
],
|
],
|
||||||
@@ -82,5 +81,13 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"100"
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+13
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks ASA @base",
|
"name": "Generic ASA @Blocks",
|
||||||
"inherits": "fdm_filament_asa",
|
"inherits": "fdm_filament_asa",
|
||||||
|
"renamed_from": "Blocks Generic ASA",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OFTz2YXa",
|
"setting_id": "xP7cB4RHgbm4cYDD",
|
||||||
"instantiation": "false",
|
"filament_id": "OFLPAxz3",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
"filament_flow_ratio": [
|
||||||
"0.95"
|
"0.95"
|
||||||
],
|
],
|
||||||
@@ -82,5 +81,13 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"100"
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+13
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks ASA-CF @base",
|
"name": "Generic ASA-CF @Blocks",
|
||||||
"inherits": "fdm_filament_asa",
|
"inherits": "fdm_filament_asa",
|
||||||
|
"renamed_from": "Blocks Generic ASA-CF",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OF8b9I7o",
|
"setting_id": "ju4ue7yJoz3ujny6",
|
||||||
"instantiation": "false",
|
"filament_id": "OF53eLVD",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"ASA-CF"
|
"ASA-CF"
|
||||||
],
|
],
|
||||||
@@ -85,5 +84,13 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"100"
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Generic PA @Blocks",
|
||||||
|
"inherits": "fdm_filament_pa",
|
||||||
|
"renamed_from": "Blocks Generic PA",
|
||||||
|
"from": "system",
|
||||||
|
"setting_id": "hL3p8gAeciwDkjNK",
|
||||||
|
"filament_id": "OFg8ndtj",
|
||||||
|
"instantiation": "true",
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.98"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
||||||
+13
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks PA-CF @base",
|
"name": "Generic PA-CF @Blocks",
|
||||||
"inherits": "fdm_filament_pa",
|
"inherits": "fdm_filament_pa",
|
||||||
|
"renamed_from": "Blocks Generic PA-CF",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OFdWrXpL",
|
"setting_id": "T6SO0WRdnG6wcyG8",
|
||||||
"instantiation": "false",
|
"filament_id": "OFQLcbps",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PA-CF"
|
"PA-CF"
|
||||||
],
|
],
|
||||||
@@ -88,5 +87,13 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"80"
|
"80"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Generic PC @Blocks",
|
||||||
|
"inherits": "fdm_filament_pc",
|
||||||
|
"renamed_from": "Blocks Generic PC",
|
||||||
|
"from": "system",
|
||||||
|
"setting_id": "Xhs8PjtmwwVj0ksE",
|
||||||
|
"filament_id": "OFLakOUI",
|
||||||
|
"instantiation": "true",
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.94"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
||||||
+18
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks PETG @base",
|
"name": "Generic PETG @Blocks",
|
||||||
"inherits": "fdm_filament_petg",
|
"inherits": "fdm_filament_petg",
|
||||||
|
"renamed_from": "Blocks Generic PETG",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OF9t1Ga0",
|
"setting_id": "NgzPlYItKHbmGgv3",
|
||||||
"instantiation": "false",
|
"filament_id": "OFYPdQJh",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
"filament_flow_ratio": [
|
||||||
"0.94"
|
"0.94"
|
||||||
],
|
],
|
||||||
@@ -82,5 +81,18 @@
|
|||||||
],
|
],
|
||||||
"slow_down_layer_time": [
|
"slow_down_layer_time": [
|
||||||
"5"
|
"5"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS Pro S100 0.4 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.6 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.8 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.0 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.2 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+18
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks PLA @base",
|
"name": "Generic PLA @Blocks",
|
||||||
"inherits": "fdm_filament_pla",
|
"inherits": "fdm_filament_pla",
|
||||||
|
"renamed_from": "Blocks Generic PLA",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OFVGAC8g",
|
"setting_id": "kjhuttx4T8OtTNmV",
|
||||||
"instantiation": "false",
|
"filament_id": "OFDSrzZ8",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_flow_ratio": [
|
"filament_flow_ratio": [
|
||||||
"0.95"
|
"0.95"
|
||||||
],
|
],
|
||||||
@@ -40,5 +39,18 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"100"
|
"100"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS Pro S100 0.4 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.6 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.8 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.0 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.2 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Generic PLA-CF @Blocks",
|
||||||
|
"inherits": "fdm_filament_pla",
|
||||||
|
"renamed_from": "Blocks Generic PLA-CF",
|
||||||
|
"from": "system",
|
||||||
|
"setting_id": "oKUqzwAWMrpiyGLf",
|
||||||
|
"filament_id": "OFWbdGsC",
|
||||||
|
"instantiation": "true",
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.95"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"20"
|
||||||
|
],
|
||||||
|
"filament_type": [
|
||||||
|
"PLA-CF"
|
||||||
|
],
|
||||||
|
"slow_down_layer_time": [
|
||||||
|
"7"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"type": "filament",
|
||||||
|
"name": "Generic PVA @Blocks",
|
||||||
|
"inherits": "fdm_filament_pva",
|
||||||
|
"renamed_from": "Blocks Generic PVA",
|
||||||
|
"from": "system",
|
||||||
|
"setting_id": "tNw3oe7VovLkgUbB",
|
||||||
|
"filament_id": "OFDvXujf",
|
||||||
|
"instantiation": "true",
|
||||||
|
"filament_flow_ratio": [
|
||||||
|
"0.98"
|
||||||
|
],
|
||||||
|
"filament_max_volumetric_speed": [
|
||||||
|
"20"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
|
]
|
||||||
|
}
|
||||||
+18
-6
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
"type": "filament",
|
"type": "filament",
|
||||||
"name": "Blocks TPU @base",
|
"name": "Generic TPU @Blocks",
|
||||||
"inherits": "fdm_filament_tpu",
|
"inherits": "fdm_filament_tpu",
|
||||||
|
"renamed_from": "Blocks Generic TPU",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"filament_id": "OFYnedOZ",
|
"setting_id": "6iVYOCZo8ugs4JA0",
|
||||||
"instantiation": "false",
|
"filament_id": "OFgbpcy9",
|
||||||
"filament_vendor": [
|
"instantiation": "true",
|
||||||
"Blocks"
|
|
||||||
],
|
|
||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"4"
|
"4"
|
||||||
],
|
],
|
||||||
@@ -55,5 +54,18 @@
|
|||||||
],
|
],
|
||||||
"during_print_exhaust_fan_speed": [
|
"during_print_exhaust_fan_speed": [
|
||||||
"80"
|
"80"
|
||||||
|
],
|
||||||
|
"compatible_printers": [
|
||||||
|
"BLOCKS Pro S100 0.4 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.6 nozzle",
|
||||||
|
"BLOCKS Pro S100 0.8 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.0 nozzle",
|
||||||
|
"BLOCKS Pro S100 1.2 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.4 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.6 nozzle",
|
||||||
|
"BLOCKS RD50 V2 0.8 nozzle",
|
||||||
|
"BLOCKS RF50 0.4 nozzle",
|
||||||
|
"BLOCKS RF50 0.6 nozzle",
|
||||||
|
"BLOCKS RF50 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"setting_id": "G7HQgaspHXduDM8O",
|
"setting_id": "G7HQgaspHXduDM8O",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"printer_model": "BLOCKS Pro S100",
|
"printer_model": "BLOCKS Pro S100",
|
||||||
"default_print_profile": "0.20mm Standard 0.4 nozzle @Blocks_Pro_S100",
|
"default_print_profile": "0.20mm Standard 0.4 nozzle @Blocks",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.30"
|
"0.30"
|
||||||
],
|
],
|
||||||
@@ -25,8 +25,5 @@
|
|||||||
"printable_height": "900",
|
"printable_height": "900",
|
||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS Pro S100"
|
"BLOCKS Pro S100"
|
||||||
],
|
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_Pro_S100"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"setting_id": "XkWdS210oUMQN17N",
|
"setting_id": "XkWdS210oUMQN17N",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"printer_model": "BLOCKS Pro S100",
|
"printer_model": "BLOCKS Pro S100",
|
||||||
"default_print_profile": "0.30mm Standard 0.6 nozzle @Blocks_Pro_S100",
|
"default_print_profile": "0.30mm Standard 0.6 nozzle @Blocks",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.50"
|
"0.50"
|
||||||
],
|
],
|
||||||
@@ -26,8 +26,5 @@
|
|||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS Pro S100"
|
"BLOCKS Pro S100"
|
||||||
],
|
],
|
||||||
"printer_variant": "0.6",
|
"printer_variant": "0.6"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_Pro_S100"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"setting_id": "I6PdeCS7SbvIlkZf",
|
"setting_id": "I6PdeCS7SbvIlkZf",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"printer_model": "BLOCKS Pro S100",
|
"printer_model": "BLOCKS Pro S100",
|
||||||
"default_print_profile": "0.40mm Standard 0.8 nozzle @Blocks_Pro_S100",
|
"default_print_profile": "0.40mm Standard 0.8 nozzle @Blocks",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.56"
|
"0.56"
|
||||||
],
|
],
|
||||||
@@ -26,8 +26,5 @@
|
|||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS Pro S100"
|
"BLOCKS Pro S100"
|
||||||
],
|
],
|
||||||
"printer_variant": "0.8",
|
"printer_variant": "0.8"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_Pro_S100"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"setting_id": "elLdUyy9RhUoa37o",
|
"setting_id": "elLdUyy9RhUoa37o",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"printer_model": "BLOCKS Pro S100",
|
"printer_model": "BLOCKS Pro S100",
|
||||||
"default_print_profile": "0.50mm Standard 1.0 nozzle @Blocks_Pro_S100",
|
"default_print_profile": "0.50mm Standard 1.0 nozzle @Blocks",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.7"
|
"0.7"
|
||||||
],
|
],
|
||||||
@@ -26,8 +26,5 @@
|
|||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS Pro S100"
|
"BLOCKS Pro S100"
|
||||||
],
|
],
|
||||||
"printer_variant": "1.0",
|
"printer_variant": "1.0"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_Pro_S100"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"setting_id": "xtsGSJ4JkbHTPi44",
|
"setting_id": "xtsGSJ4JkbHTPi44",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"printer_model": "BLOCKS Pro S100",
|
"printer_model": "BLOCKS Pro S100",
|
||||||
"default_print_profile": "0.60mm Standard 1.2 nozzle @Blocks_Pro_S100",
|
"default_print_profile": "0.60mm Standard 1.2 nozzle @Blocks",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.8"
|
"0.8"
|
||||||
],
|
],
|
||||||
@@ -26,8 +26,5 @@
|
|||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS Pro S100"
|
"BLOCKS Pro S100"
|
||||||
],
|
],
|
||||||
"printer_variant": "1.2",
|
"printer_variant": "1.2"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_Pro_S100"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,5 +8,5 @@
|
|||||||
"bed_model": "PRO S100 HotBed model.stl",
|
"bed_model": "PRO S100 HotBed model.stl",
|
||||||
"bed_texture": "PRO S100 HotBed texture.svg",
|
"bed_texture": "PRO S100 HotBed texture.svg",
|
||||||
"hotend_model": "BLOCKS PrintCore.stl",
|
"hotend_model": "BLOCKS PrintCore.stl",
|
||||||
"default_materials": "Blocks PLA @Blocks_Pro_S100;Blocks PETG @Blocks_Pro_S100;Blocks TPU @Blocks_Pro_S100"
|
"default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,9 +34,5 @@
|
|||||||
"printable_height": "500",
|
"printable_height": "500",
|
||||||
"upward_compatible_machine": [
|
"upward_compatible_machine": [
|
||||||
"BLOCKS RD50 V2"
|
"BLOCKS RD50 V2"
|
||||||
],
|
|
||||||
"printer_variant": "0.4",
|
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RD50_V2"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,8 +35,5 @@
|
|||||||
"deretraction_speed": [
|
"deretraction_speed": [
|
||||||
"80"
|
"80"
|
||||||
],
|
],
|
||||||
"printer_variant": "0.6",
|
"printer_variant": "0.6"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RD50_V2"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,8 +35,5 @@
|
|||||||
"deretraction_speed": [
|
"deretraction_speed": [
|
||||||
"80"
|
"80"
|
||||||
],
|
],
|
||||||
"printer_variant": "0.8",
|
"printer_variant": "0.8"
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RD50_V2"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,5 +8,5 @@
|
|||||||
"bed_model": "RD50 V2 HotBed model.stl",
|
"bed_model": "RD50 V2 HotBed model.stl",
|
||||||
"bed_texture": "RD50 V2 HotBed texture.svg",
|
"bed_texture": "RD50 V2 HotBed texture.svg",
|
||||||
"hotend_model": "BLOCKS PrintCore.stl",
|
"hotend_model": "BLOCKS PrintCore.stl",
|
||||||
"default_materials": "Blocks PLA @Blocks_RD50_V2;Blocks PETG @Blocks_RD50_V2;Blocks TPU @Blocks_RD50_V2"
|
"default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
"12"
|
"12"
|
||||||
],
|
],
|
||||||
"retraction_length": [
|
"retraction_length": [
|
||||||
"1.2"
|
"1"
|
||||||
],
|
],
|
||||||
"retraction_speed": [
|
"retraction_speed": [
|
||||||
"60"
|
"60"
|
||||||
@@ -79,10 +79,5 @@
|
|||||||
],
|
],
|
||||||
"retract_before_wipe": [
|
"retract_before_wipe": [
|
||||||
"0"
|
"0"
|
||||||
],
|
]
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RF50"
|
|
||||||
],
|
|
||||||
"support_multi_bed_types": "1",
|
|
||||||
"default_bed_type": "Textured PEI Plate"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
"12"
|
"12"
|
||||||
],
|
],
|
||||||
"retraction_length": [
|
"retraction_length": [
|
||||||
"1.2"
|
"1"
|
||||||
],
|
],
|
||||||
"retraction_speed": [
|
"retraction_speed": [
|
||||||
"60"
|
"60"
|
||||||
@@ -75,8 +75,8 @@
|
|||||||
"BLOCKS RF50"
|
"BLOCKS RF50"
|
||||||
],
|
],
|
||||||
"machine_start_gcode": [
|
"machine_start_gcode": [
|
||||||
"PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer]\n",
|
"PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer]",
|
||||||
"SET_PRESSURE_ADVANCE ADVANCE=0.046\n"
|
"SET_PRESSURE_ADVANCE ADVANCE=0.046"
|
||||||
],
|
],
|
||||||
"printer_variant": "0.6",
|
"printer_variant": "0.6",
|
||||||
"wipe_distance": [
|
"wipe_distance": [
|
||||||
@@ -84,10 +84,5 @@
|
|||||||
],
|
],
|
||||||
"retract_before_wipe": [
|
"retract_before_wipe": [
|
||||||
"0"
|
"0"
|
||||||
],
|
]
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RF50"
|
|
||||||
],
|
|
||||||
"support_multi_bed_types": "1",
|
|
||||||
"default_bed_type": "Textured PEI Plate"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
"12"
|
"12"
|
||||||
],
|
],
|
||||||
"retraction_length": [
|
"retraction_length": [
|
||||||
"1.2"
|
"1"
|
||||||
],
|
],
|
||||||
"retraction_speed": [
|
"retraction_speed": [
|
||||||
"60"
|
"60"
|
||||||
@@ -80,10 +80,5 @@
|
|||||||
],
|
],
|
||||||
"retract_before_wipe": [
|
"retract_before_wipe": [
|
||||||
"0"
|
"0"
|
||||||
],
|
]
|
||||||
"default_filament_profile": [
|
|
||||||
"Blocks PLA @Blocks_RF50"
|
|
||||||
],
|
|
||||||
"support_multi_bed_types": "1",
|
|
||||||
"default_bed_type": "Textured PEI Plate"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,5 @@
|
|||||||
"bed_model": "RF50 HotBed model.stl",
|
"bed_model": "RF50 HotBed model.stl",
|
||||||
"bed_texture": "RF50 HotBed texture.svg",
|
"bed_texture": "RF50 HotBed texture.svg",
|
||||||
"hotend_model": "BLOCKS PrintCore.stl",
|
"hotend_model": "BLOCKS PrintCore.stl",
|
||||||
"default_materials": "Blocks PLA @Blocks_RF50;Blocks PETG @Blocks_RF50;Blocks TPU @Blocks_RF50",
|
"default_materials": "Generic PLA @Blocks;Generic PETG @Blocks;Generic TPU @Blocks"
|
||||||
"not_support_bed_type": "Smooth Cool Plate;Engineering Plate;Textured Cool Plate;Cool Plate (SuperTack)"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,6 +123,9 @@
|
|||||||
"wipe": [
|
"wipe": [
|
||||||
"1"
|
"1"
|
||||||
],
|
],
|
||||||
|
"default_filament_profile": [
|
||||||
|
"Generic PLA @Blocks"
|
||||||
|
],
|
||||||
"bed_exclude_area": [
|
"bed_exclude_area": [
|
||||||
"0x0"
|
"0x0"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.20mm Standard 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.20mm Standard 0.4 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_blocks_common",
|
"inherits": "fdm_process_blocks_common",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "QSEguMMChNFZsK5H",
|
"setting_id": "47aDtVL6E5DVr7Mt",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"layer_height": "0.2",
|
"layer_height": "0.2",
|
||||||
"bottom_shell_layers": "4",
|
"bottom_shell_layers": "4",
|
||||||
"top_shell_layers": "5",
|
"top_shell_layers": "5",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.4 nozzle"
|
"BLOCKS Pro S100 0.4 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.20mm Standard 0.4 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -61,7 +61,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.24mm Draft 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.24mm Draft 0.4 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_blocks_common",
|
"inherits": "fdm_process_blocks_common",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "uALfEFHGmup6vBYI",
|
"setting_id": "ETADjxV6ViJQdnHA",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"layer_height": "0.24",
|
"layer_height": "0.24",
|
||||||
"bottom_shell_layers": "4",
|
"bottom_shell_layers": "4",
|
||||||
"top_shell_layers": "5",
|
"top_shell_layers": "5",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.4 nozzle"
|
"BLOCKS Pro S100 0.4 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.24mm Draft 0.4 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.30mm Extra Draft 0.4 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Extra Draft 0.4 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_blocks_common",
|
"inherits": "fdm_process_blocks_common",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "HYKF5l2OGvpugSQy",
|
"setting_id": "UbuICsmppKDsaaZ4",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "4",
|
"top_shell_layers": "4",
|
||||||
"layer_height": "0.30",
|
"layer_height": "0.30",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.4 nozzle"
|
"BLOCKS Pro S100 0.4 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.30mm Extra Draft 0.4 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.30mm Optimal 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Optimal 0.8 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 0.8 nozzle",
|
"inherits": "fdm_process_common 0.8 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "OUfZvizM5MGnvHfp",
|
"setting_id": "YqkYzp5zdH4R5upm",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.3",
|
"layer_height": "0.3",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.8 nozzle"
|
"BLOCKS Pro S100 0.8 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.30mm Optimal 0.8 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.30mm Optimal 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Optimal 1.0 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.0 nozzle",
|
"inherits": "fdm_process_common 1.0 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "HGG9WxKVr89qNFDx",
|
"setting_id": "8pBawPScHkyQu0SW",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "4",
|
"bottom_shell_layers": "4",
|
||||||
"top_shell_layers": "4",
|
"top_shell_layers": "4",
|
||||||
"layer_height": "0.30",
|
"layer_height": "0.30",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.0 nozzle"
|
"BLOCKS Pro S100 1.0 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.30mm Optimal 1.0 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.30mm Standard 0.6 nozzle @Blocks_Pro_S100",
|
"name": "0.30mm Standard 0.6 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 0.6 nozzle",
|
"inherits": "fdm_process_common 0.6 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "gO2I1YjBl4nf8yzr",
|
"setting_id": "EPI3PAVK9LpJOZWO",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.30",
|
"layer_height": "0.30",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.6 nozzle"
|
"BLOCKS Pro S100 0.6 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.30mm Standard 0.6 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.40mm Draft 0.6 nozzle @Blocks_Pro_S100",
|
"name": "0.40mm Draft 0.6 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 0.6 nozzle",
|
"inherits": "fdm_process_common 0.6 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "OjsLUl1heqv1cevs",
|
"setting_id": "CShVKoGspbMJNPw8",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "2",
|
"top_shell_layers": "2",
|
||||||
"layer_height": "0.40",
|
"layer_height": "0.40",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.6 nozzle"
|
"BLOCKS Pro S100 0.6 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.40mm Draft 0.6 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.40mm Standard 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.40mm Standard 0.8 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 0.8 nozzle",
|
"inherits": "fdm_process_common 0.8 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "laOTioBGySeudJpl",
|
"setting_id": "TSRjmfWaatY7oLJB",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "4",
|
"top_shell_layers": "4",
|
||||||
"layer_height": "0.40",
|
"layer_height": "0.40",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.8 nozzle"
|
"BLOCKS Pro S100 0.8 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.40mm Standard 0.8 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.50mm Draft 0.8 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Draft 0.8 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 0.8 nozzle",
|
"inherits": "fdm_process_common 0.8 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "oAhgUZdADR7kP87e",
|
"setting_id": "vOtZHrDS88Shmf2m",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "4",
|
"top_shell_layers": "4",
|
||||||
"layer_height": "0.50",
|
"layer_height": "0.50",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 0.8 nozzle"
|
"BLOCKS Pro S100 0.8 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.50mm Draft 0.8 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.50mm Optimal 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Optimal 1.2 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.2 nozzle",
|
"inherits": "fdm_process_common 1.2 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "0eqNgX26jemsBfV5",
|
"setting_id": "BKrEAKqDYzdH43wc",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.50",
|
"layer_height": "0.50",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
"BLOCKS Pro S100 1.2 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.50mm Optimal 1.2 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.50mm Standard 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.50mm Standard 1.0 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.0 nozzle",
|
"inherits": "fdm_process_common 1.0 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "z1qCW1cEMc4QvBbV",
|
"setting_id": "D40iksDm7mFjhSKn",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "3",
|
"bottom_shell_layers": "3",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.50",
|
"layer_height": "0.50",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.0 nozzle"
|
"BLOCKS Pro S100 1.0 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.50mm Standard 1.0 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"top_solid_infill_flow_ratio": "0.97",
|
"top_solid_infill_flow_ratio": "0.97",
|
||||||
"bottom_solid_infill_flow_ratio": "1.08",
|
"bottom_solid_infill_flow_ratio": "1.08",
|
||||||
"seam_position": "aligned",
|
"seam_position": "aligned",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_patter": "grid",
|
||||||
"initial_layer_speed": "60",
|
"initial_layer_speed": "60",
|
||||||
"initial_layer_infill_speed": "80",
|
"initial_layer_infill_speed": "80",
|
||||||
"initial_travel_speed": "100%",
|
"initial_travel_speed": "100%",
|
||||||
@@ -57,7 +57,5 @@
|
|||||||
"accel_to_decel_enable": "1",
|
"accel_to_decel_enable": "1",
|
||||||
"accel_to_decel_factor": "50%",
|
"accel_to_decel_factor": "50%",
|
||||||
"elefant_foot_compensation": "0.25",
|
"elefant_foot_compensation": "0.25",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1"
|
||||||
"skirt_loops": "2",
|
|
||||||
"skirt_type": "perobject"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.60mm Draft 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.60mm Draft 1.0 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.0 nozzle",
|
"inherits": "fdm_process_common 1.0 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "gTTgtfG8qb9My3hH",
|
"setting_id": "UJUe8XCBzZf8NyCL",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.60",
|
"layer_height": "0.60",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.0 nozzle"
|
"BLOCKS Pro S100 1.0 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.60mm Draft 1.0 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.60mm Standard 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.60mm Standard 1.2 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.2 nozzle",
|
"inherits": "fdm_process_common 1.2 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "ApcyToENCIANrI71",
|
"setting_id": "PSBFrTykpkytPI2Q",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.60",
|
"layer_height": "0.60",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
"BLOCKS Pro S100 1.2 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.60mm Standard 1.2 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.70mm Draft 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.70mm Draft 1.2 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.2 nozzle",
|
"inherits": "fdm_process_common 1.2 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "DEv7X7zaTfxRQmjo",
|
"setting_id": "0ZQ0USGX9SwAKr29",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.70",
|
"layer_height": "0.70",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
"BLOCKS Pro S100 1.2 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.70mm Draft 1.2 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.70mm Extra Draft 1.0 nozzle @Blocks_Pro_S100",
|
"name": "0.70mm Extra Draft 1.0 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.0 nozzle",
|
"inherits": "fdm_process_common 1.0 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "nUW7N9dJmTyQT4AG",
|
"setting_id": "69PFmjOVFBOIp3Qg",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "3",
|
"top_shell_layers": "3",
|
||||||
"layer_height": "0.70",
|
"layer_height": "0.70",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.0 nozzle"
|
"BLOCKS Pro S100 1.0 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.70mm Extra Draft 1.0 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
+3
-4
@@ -1,15 +1,14 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"name": "0.80mm Extra Draft 1.2 nozzle @Blocks_Pro_S100",
|
"name": "0.80mm Extra Draft 1.2 nozzle @Blocks",
|
||||||
"inherits": "fdm_process_common 1.2 nozzle",
|
"inherits": "fdm_process_common 1.2 nozzle",
|
||||||
"from": "system",
|
"from": "system",
|
||||||
"setting_id": "JMy62SonRfK0cAdL",
|
"setting_id": "iBwRI5JJewW5HJSv",
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"bottom_shell_layers": "2",
|
"bottom_shell_layers": "2",
|
||||||
"top_shell_layers": "2",
|
"top_shell_layers": "2",
|
||||||
"layer_height": "0.80",
|
"layer_height": "0.80",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"BLOCKS Pro S100 1.2 nozzle"
|
"BLOCKS Pro S100 1.2 nozzle"
|
||||||
],
|
]
|
||||||
"renamed_from": "0.80mm Extra Draft 1.2 nozzle @Blocks"
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "OrcaFilamentLibrary",
|
"name": "OrcaFilamentLibrary",
|
||||||
"version": "02.04.00.13",
|
"version": "02.04.00.12",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "Orca Filament Library",
|
"description": "Orca Filament Library",
|
||||||
"filament_list": [
|
"filament_list": [
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"filament_id": "OFvgE0Zh",
|
"filament_id": "OFvgE0Zh",
|
||||||
"instantiation": "false",
|
"instantiation": "false",
|
||||||
"fan_cooling_layer_time": [
|
"fan_cooling_layer_time": [
|
||||||
"81"
|
"80"
|
||||||
],
|
],
|
||||||
"fan_min_speed": [
|
"fan_min_speed": [
|
||||||
"50"
|
"50"
|
||||||
|
|||||||
@@ -575,7 +575,7 @@ function CapabilityCanRun(plugin, capability) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function IsPluginChecked(plugin) {
|
function IsPluginChecked(plugin) {
|
||||||
return plugin.is_loaded;
|
return GetStatus(plugin) === "Activated";
|
||||||
}
|
}
|
||||||
|
|
||||||
function HasMixedCapabilityState(plugin) {
|
function HasMixedCapabilityState(plugin) {
|
||||||
@@ -1347,8 +1347,6 @@ function StatusDescription(plugin) {
|
|||||||
return "This plugin is still loading.";
|
return "This plugin is still loading.";
|
||||||
case "Error":
|
case "Error":
|
||||||
return "This plugin is blocked until its error is fixed.";
|
return "This plugin is blocked until its error is fixed.";
|
||||||
case "RuntimeError":
|
|
||||||
return "This plugin is loaded but a capability reported an error.";
|
|
||||||
case "Inactive":
|
case "Inactive":
|
||||||
default:
|
default:
|
||||||
return "This plugin is inactive. Activate it to install or load it.";
|
return "This plugin is inactive. Activate it to install or load it.";
|
||||||
|
|||||||
@@ -424,11 +424,6 @@ body.pane-resizing {
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-cell.status-runtimeerror {
|
|
||||||
color: var(--plugin-status-warn);
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-cell.status-loading {
|
.status-cell.status-loading {
|
||||||
color: var(--plugin-status-warn);
|
color: var(--plugin-status-warn);
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
@@ -685,11 +680,6 @@ body.pane-resizing {
|
|||||||
color: var(--plugin-status-danger);
|
color: var(--plugin-status-danger);
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-status-chip.status-runtimeerror {
|
|
||||||
background: var(--plugin-status-warn-bg);
|
|
||||||
color: var(--plugin-status-warn);
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-status-chip.status-loading {
|
.detail-status-chip.status-loading {
|
||||||
background: var(--plugin-status-warn-bg);
|
background: var(--plugin-status-warn-bg);
|
||||||
color: var(--plugin-status-warn);
|
color: var(--plugin-status-warn);
|
||||||
|
|||||||
@@ -331,15 +331,6 @@ modules:
|
|||||||
sha256: deedcabe339165214a3637df4c86a507aef0d793cf8774ff68735f4737e8ddbc
|
sha256: deedcabe339165214a3637df4c86a507aef0d793cf8774ff68735f4737e8ddbc
|
||||||
dest: external-packages/FFMPEG
|
dest: external-packages/FFMPEG
|
||||||
|
|
||||||
# libdatachannel v0.24.5
|
|
||||||
# The Git checkout includes the submodules that are missing from the
|
|
||||||
# GitHub source archive. DataChannel.cmake consumes it as SOURCE_DIR.
|
|
||||||
- type: git
|
|
||||||
url: https://github.com/paullouisageneau/libdatachannel.git
|
|
||||||
tag: v0.24.5
|
|
||||||
commit: 443f6934d9007eb7076ab7825ba330f355fcbead
|
|
||||||
dest: external-packages/DataChannel
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Fallback archives for deps normally provided by the GNOME SDK.
|
# Fallback archives for deps normally provided by the GNOME SDK.
|
||||||
# These are only used if find_package() fails to locate them.
|
# These are only used if find_package() fails to locate them.
|
||||||
|
|||||||
@@ -205,6 +205,13 @@ void AppConfig::set_defaults()
|
|||||||
if (get("seq_top_layer_only").empty())
|
if (get("seq_top_layer_only").empty())
|
||||||
set("seq_top_layer_only", "1");
|
set("seq_top_layer_only", "1");
|
||||||
|
|
||||||
|
// what the preview draws while the user drags it
|
||||||
|
{
|
||||||
|
const std::string mode = get("preview_reduced_detail_mode");
|
||||||
|
if (mode != "off" && mode != "solid" && mode != "shell")
|
||||||
|
set("preview_reduced_detail_mode", "off");
|
||||||
|
}
|
||||||
|
|
||||||
// ORCA: darken the layers the preview layer slider is not scrubbed to
|
// ORCA: darken the layers the preview layer slider is not scrubbed to
|
||||||
if (get("preview_dim_previous_layers").empty())
|
if (get("preview_dim_previous_layers").empty())
|
||||||
set_bool("preview_dim_previous_layers", false);
|
set_bool("preview_dim_previous_layers", false);
|
||||||
|
|||||||
@@ -2673,10 +2673,10 @@ void CadDocument::apply_feature(TopoDS_Shape& result, bool& have_body,
|
|||||||
ridge = pipe.Shape();
|
ridge = pipe.Shape();
|
||||||
have_ridge = !ridge.IsNull();
|
have_ridge = !ridge.IsNull();
|
||||||
}
|
}
|
||||||
} catch (const Standard_Failure&) {
|
|
||||||
have_ridge = false; // OCCT failure — on OCCT >= 8 Standard_Failure derives from std::exception, so this handler must come first
|
|
||||||
} catch (const std::exception&) {
|
} catch (const std::exception&) {
|
||||||
have_ridge = false; // fall back to the bare cylinder/bore below
|
have_ridge = false; // fall back to the bare cylinder/bore below
|
||||||
|
} catch (const Standard_Failure&) {
|
||||||
|
have_ridge = false; // OCCT failure (not a std::exception) — must be caught here too
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f.thread_internal) {
|
if (f.thread_internal) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user