mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-15 07:48:02 +08:00
Merge branch 'main' into CURA-11288
This commit is contained in:
commit
ed378f61ed
6
.github/ISSUE_TEMPLATE/SlicingCrash.yaml
vendored
6
.github/ISSUE_TEMPLATE/SlicingCrash.yaml
vendored
@ -23,14 +23,14 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
attributes:
|
attributes:
|
||||||
label: Cura Version
|
label: Cura Version
|
||||||
placeholder: 5.3.1
|
placeholder: 5.6.0
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
We work hard on improving our slicing crashes. Our most recent release is 5.3.1.
|
We work hard on improving our slicing crashes. Our most recent release is 5.6.0.
|
||||||
If you are not on the latest version of Cura, [you can download it here](https://github.com/Ultimaker/Cura/releases/tag/5.3.1)
|
If you are not on the latest version of Cura, [you can download it here](https://github.com/Ultimaker/Cura/releases/latest)
|
||||||
- type: input
|
- type: input
|
||||||
attributes:
|
attributes:
|
||||||
label: Operating System
|
label: Operating System
|
||||||
|
16
.github/workflows/conan-package-create.yml
vendored
16
.github/workflows/conan-package-create.yml
vendored
@ -139,26 +139,18 @@ jobs:
|
|||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Add Cura private Artifactory remote
|
- name: Add Cura private Artifactory remote
|
||||||
run: |
|
run: conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
|
||||||
conan remote add cura-private https://ultimaker.jfrog.io/artifactory/api/conan/cura-private True
|
|
||||||
conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
|
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
- name: Set GH service account for remote cura-conan-dev
|
||||||
run: |
|
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
||||||
conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Create the Packages
|
- name: Create the Packages
|
||||||
run: conan install ${{ inputs.recipe_id_full }} --build=missing --update -c tools.build:skip_test=True
|
run: conan install ${{ inputs.recipe_id_full }} --build=missing --update -c tools.build:skip_test=True
|
||||||
|
|
||||||
- name: Upload the Package(s)
|
- name: Upload the Package(s)
|
||||||
if: ${{ always() && inputs.conan_upload_community }}
|
if: ${{ always() && inputs.conan_upload_community }}
|
||||||
run: |
|
run: conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
|
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-conan-dev --all -c
|
|
||||||
|
|
||||||
- name: Upload the Package(s) to the private Artifactory
|
- name: Upload the Package(s) to the private Artifactory
|
||||||
if: ${{ always() && ! inputs.conan_upload_community }}
|
if: ${{ always() && ! inputs.conan_upload_community }}
|
||||||
run: |
|
run: conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-private --all -c
|
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c
|
|
||||||
|
17
.github/workflows/conan-package.yml
vendored
17
.github/workflows/conan-package.yml
vendored
@ -41,12 +41,12 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- 'CURA-*'
|
- 'CURA-*'
|
||||||
- '[1-9].[0-9]'
|
- '[0-9].[0-9]'
|
||||||
- '[1-9].[0-9][0-9]'
|
- '[0-9].[0-9][0-9]'
|
||||||
tags:
|
tags:
|
||||||
- '[1-9].[0-9].[0-9]*'
|
- '[0-9].[0-9].[0-9]*'
|
||||||
- '[1-9].[0-9].[0-9]'
|
- '[0-9].[0-9].[0-9]'
|
||||||
- '[1-9].[0-9][0-9].[0-9]*'
|
- '[0-9].[0-9][0-9].[0-9]*'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
|
CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
|
||||||
@ -102,7 +102,7 @@ jobs:
|
|||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt upgrade
|
sudo apt upgrade
|
||||||
sudo apt install efibootmgr build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config flex bison g++-12 gcc-12 -y
|
sudo apt install efibootmgr build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config flex bison libxcb-cursor-dev g++-12 gcc-12 -y
|
||||||
|
|
||||||
- name: Install GCC-13
|
- name: Install GCC-13
|
||||||
run: |
|
run: |
|
||||||
@ -118,9 +118,6 @@ jobs:
|
|||||||
conan config install https://github.com/Ultimaker/conan-config.git
|
conan config install https://github.com/Ultimaker/conan-config.git
|
||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
|
||||||
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Create the Packages
|
- name: Create the Packages
|
||||||
run: conan create . ${{ needs.conan-recipe-version.outputs.recipe_id_full }} --build=missing --update -o ${{ needs.conan-recipe-version.outputs.project_name }}:devtools=True -o ${{ needs.conan-recipe-version.outputs.project_name }}:enable_i18n=True -c tools.build:skip_test=True
|
run: conan create . ${{ needs.conan-recipe-version.outputs.recipe_id_full }} --build=missing --update -o ${{ needs.conan-recipe-version.outputs.project_name }}:devtools=True -o ${{ needs.conan-recipe-version.outputs.project_name }}:enable_i18n=True -c tools.build:skip_test=True
|
||||||
|
|
||||||
@ -132,9 +129,7 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_full }} -r cura --all -c
|
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_full }} -r cura --all -c
|
||||||
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_full }} -r cura-conan-dev --all -c
|
|
||||||
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura -c
|
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura -c
|
||||||
conan upload ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura-conan-dev -c
|
|
||||||
|
|
||||||
notify-create:
|
notify-create:
|
||||||
if: ${{ always() && (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) }}
|
if: ${{ always() && (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) }}
|
||||||
|
12
.github/workflows/conan-recipe-export.yml
vendored
12
.github/workflows/conan-recipe-export.yml
vendored
@ -80,14 +80,10 @@ jobs:
|
|||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Add Cura private Artifactory remote
|
- name: Add Cura private Artifactory remote
|
||||||
run: |
|
run: conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
|
||||||
conan remote add cura-private https://ultimaker.jfrog.io/artifactory/api/conan/cura-private True
|
|
||||||
conan remote add cura-private-conan-dev https://cura.jfrog.io/artifactory/api/conan/cura-private-conan-dev True
|
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
- name: Set GH service account for remote cura-conan-dev
|
||||||
run: |
|
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
||||||
conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-private-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Export the Package (binaries)
|
- name: Export the Package (binaries)
|
||||||
if: ${{ inputs.conan_export_binaries }}
|
if: ${{ inputs.conan_export_binaries }}
|
||||||
@ -105,14 +101,10 @@ jobs:
|
|||||||
if: ${{ always() && inputs.conan_upload_community }}
|
if: ${{ always() && inputs.conan_upload_community }}
|
||||||
run: |
|
run: |
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
|
conan upload ${{ inputs.recipe_id_full }} -r cura --all -c
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-conan-dev --all -c
|
|
||||||
conan upload ${{ inputs.recipe_id_latest }} -r cura -c
|
conan upload ${{ inputs.recipe_id_latest }} -r cura -c
|
||||||
conan upload ${{ inputs.recipe_id_latest }} -r cura-conan-dev -c
|
|
||||||
|
|
||||||
- name: Upload the Package(s) to the private Artifactory
|
- name: Upload the Package(s) to the private Artifactory
|
||||||
if: ${{ always() && ! inputs.conan_upload_community }}
|
if: ${{ always() && ! inputs.conan_upload_community }}
|
||||||
run: |
|
run: |
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-private --all -c
|
|
||||||
conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c
|
conan upload ${{ inputs.recipe_id_full }} -r cura-private-conan-dev --all -c
|
||||||
conan upload ${{ inputs.recipe_id_latest }} -r cura-private -c
|
|
||||||
conan upload ${{ inputs.recipe_id_latest }} -r cura-private-conan-dev -c
|
conan upload ${{ inputs.recipe_id_latest }} -r cura-private-conan-dev -c
|
||||||
|
5
.github/workflows/linux.yml
vendored
5
.github/workflows/linux.yml
vendored
@ -111,7 +111,7 @@ jobs:
|
|||||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt upgrade
|
sudo apt upgrade
|
||||||
sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf squashfs-tools strace util-linux zsync -y
|
sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config binutils coreutils desktop-file-utils fakeroot fuse libgdk-pixbuf2.0-dev patchelf squashfs-tools strace util-linux zsync libxcb-cursor-dev -y
|
||||||
|
|
||||||
# Get the AppImage tool
|
# Get the AppImage tool
|
||||||
wget --no-check-certificate --quiet https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O $GITHUB_WORKSPACE/appimagetool
|
wget --no-check-certificate --quiet https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O $GITHUB_WORKSPACE/appimagetool
|
||||||
@ -143,9 +143,6 @@ jobs:
|
|||||||
conan config install https://github.com/Ultimaker/conan-config.git
|
conan config install https://github.com/Ultimaker/conan-config.git
|
||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
|
||||||
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Use Conan download cache (Bash)
|
- name: Use Conan download cache (Bash)
|
||||||
run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
|
run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
|
||||||
|
|
||||||
|
5
.github/workflows/macos.yml
vendored
5
.github/workflows/macos.yml
vendored
@ -145,16 +145,13 @@ jobs:
|
|||||||
p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }}
|
p12-password: ${{ secrets.MACOS_CERT_PASSPHRASE }}
|
||||||
|
|
||||||
- name: Remove private Artifactory
|
- name: Remove private Artifactory
|
||||||
run: conan remote remove cura-conan-private || true
|
run: conan remote remove cura-private-conan-dev || true
|
||||||
|
|
||||||
- name: Get Conan configuration
|
- name: Get Conan configuration
|
||||||
run: |
|
run: |
|
||||||
conan config install https://github.com/Ultimaker/conan-config.git
|
conan config install https://github.com/Ultimaker/conan-config.git
|
||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
|
||||||
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Use Conan download cache (Bash)
|
- name: Use Conan download cache (Bash)
|
||||||
run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
|
run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
|
||||||
|
|
||||||
|
17
.github/workflows/windows.yml
vendored
17
.github/workflows/windows.yml
vendored
@ -118,9 +118,6 @@ jobs:
|
|||||||
conan config install https://github.com/Ultimaker/conan-config.git
|
conan config install https://github.com/Ultimaker/conan-config.git
|
||||||
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
conan config install https://github.com/Ultimaker/conan-config.git -a "-b runner/${{ runner.os }}/${{ runner.arch }}"
|
||||||
|
|
||||||
- name: Set GH service account for remote cura-conan-dev
|
|
||||||
run: conan user -p ${{ secrets.CONAN_GH_RUNNER_PASS }} -r cura-conan-dev "${{ secrets.CONAN_GH_RUNNER_USER }}"
|
|
||||||
|
|
||||||
- name: Use Conan download cache (Powershell)
|
- name: Use Conan download cache (Powershell)
|
||||||
run: conan config set storage.download_cache="C:\Users\runneradmin\.conan\conan_download_cache"
|
run: conan config set storage.download_cache="C:\Users\runneradmin\.conan\conan_download_cache"
|
||||||
|
|
||||||
@ -143,13 +140,13 @@ jobs:
|
|||||||
.\cura_inst\Scripts\activate_github_actions_env.ps1
|
.\cura_inst\Scripts\activate_github_actions_env.ps1
|
||||||
.\cura_inst\Scripts\activate_github_actions_version_env.ps1
|
.\cura_inst\Scripts\activate_github_actions_version_env.ps1
|
||||||
|
|
||||||
- name: Install OpenSSL shared
|
# - name: Install OpenSSL shared
|
||||||
run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy
|
# run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy
|
||||||
|
#
|
||||||
- name: Copy OpenSSL shared (Powershell)
|
# - name: Copy OpenSSL shared (Powershell)
|
||||||
run: |
|
# run: |
|
||||||
cp openssl/bin/*.dll ./cura_inst/Scripts/
|
# cp openssl/bin/*.dll ./cura_inst/Scripts/
|
||||||
cp openssl/lib/*.lib ./cura_inst/Lib/
|
# cp openssl/lib/*.lib ./cura_inst/Lib/
|
||||||
|
|
||||||
- name: Create the Cura dist
|
- name: Create the Cura dist
|
||||||
run: pyinstaller ./cura_inst/UltiMaker-Cura.spec
|
run: pyinstaller ./cura_inst/UltiMaker-Cura.spec
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
[![Badge Test]][Test]
|
[![Badge Test]][Test]
|
||||||
[![Badge Conan]][Conan]
|
[![Badge Conan]][Conan]
|
||||||
![Badge Downloads]
|
[![Badge Downloads]][Downloads]
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@ -67,6 +67,7 @@
|
|||||||
[Issues]: https://github.com/Ultimaker/Cura/issues
|
[Issues]: https://github.com/Ultimaker/Cura/issues
|
||||||
[Conan]: https://github.com/Ultimaker/Cura/actions/workflows/conan-package.yml
|
[Conan]: https://github.com/Ultimaker/Cura/actions/workflows/conan-package.yml
|
||||||
[Test]: https://github.com/Ultimaker/Cura/actions/workflows/unit-test.yml
|
[Test]: https://github.com/Ultimaker/Cura/actions/workflows/unit-test.yml
|
||||||
|
[Downloads]: https://github.com/Ultimaker/Cura/releases/latest
|
||||||
|
|
||||||
[License]: LICENSE
|
[License]: LICENSE
|
||||||
[Report]: docs/Report.md
|
[Report]: docs/Report.md
|
||||||
@ -81,8 +82,8 @@
|
|||||||
[Badge License]: https://img.shields.io/badge/License-LGPL3-336887.svg?style=for-the-badge&labelColor=458cb5&logoColor=white&logo=GNU
|
[Badge License]: https://img.shields.io/badge/License-LGPL3-336887.svg?style=for-the-badge&labelColor=458cb5&logoColor=white&logo=GNU
|
||||||
[Badge Closed]: https://img.shields.io/github/issues-closed/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=629944&color=446a30&logo=AddThis
|
[Badge Closed]: https://img.shields.io/github/issues-closed/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=629944&color=446a30&logo=AddThis
|
||||||
[Badge Issues]: https://img.shields.io/github/issues/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=c34360&color=933349&logo=AdBlock
|
[Badge Issues]: https://img.shields.io/github/issues/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=c34360&color=933349&logo=AdBlock
|
||||||
[Badge Conan]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/conan-package?style=for-the-badge&logoColor=white&labelColor=6185aa&color=4c6987&logo=Conan&label=Conan%20Package
|
[Badge Conan]: https://img.shields.io/github/actions/workflow/status/Ultimaker/Cura/conan-package.yml?branch=main&style=for-the-badge&logoColor=white&labelColor=6185aa&color=4c6987&logo=Conan&label=Conan%20Package
|
||||||
[Badge Test]: https://img.shields.io/github/workflow/status/Ultimaker/Cura/unit-test?style=for-the-badge&logoColor=white&labelColor=4a999d&color=346c6e&logo=Codacy&label=Unit%20Test
|
[Badge Test]: https://img.shields.io/github/actions/workflow/status/Ultimaker/Cura/unit-test.yml?branch=main&style=for-the-badge&logoColor=white&labelColor=4a999d&color=346c6e&logo=Codacy&label=Unit%20Test
|
||||||
[Badge Size]: https://img.shields.io/github/repo-size/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=715a97&color=584674&logo=GoogleAnalytics
|
[Badge Size]: https://img.shields.io/github/repo-size/ultimaker/cura?style=for-the-badge&logoColor=white&labelColor=715a97&color=584674&logo=GoogleAnalytics
|
||||||
[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge
|
[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ class CuraConan(ConanFile):
|
|||||||
self.requires("curaengine_grpc_definitions/0.1.0")
|
self.requires("curaengine_grpc_definitions/0.1.0")
|
||||||
self.requires("zlib/1.2.13")
|
self.requires("zlib/1.2.13")
|
||||||
self.requires("pyarcus/5.3.0")
|
self.requires("pyarcus/5.3.0")
|
||||||
self.requires("dulcificum/(latest)@ultimaker/stable")
|
self.requires("dulcificum/0.1.0-beta.1")
|
||||||
self.requires("curaengine/(latest)@ultimaker/testing")
|
self.requires("curaengine/(latest)@ultimaker/testing")
|
||||||
self.requires("pysavitar/5.3.0")
|
self.requires("pysavitar/5.3.0")
|
||||||
self.requires("pynest2d/5.3.0")
|
self.requires("pynest2d/5.3.0")
|
||||||
@ -338,7 +338,7 @@ class CuraConan(ConanFile):
|
|||||||
|
|
||||||
def build_requirements(self):
|
def build_requirements(self):
|
||||||
if self.options.get_safe("enable_i18n", False):
|
if self.options.get_safe("enable_i18n", False):
|
||||||
self.tool_requires("gettext/0.21@ultimaker/testing", force_host_context = True)
|
self.tool_requires("gettext/0.21", force_host_context = True)
|
||||||
|
|
||||||
def layout(self):
|
def layout(self):
|
||||||
self.folders.source = "."
|
self.folders.source = "."
|
||||||
|
@ -120,6 +120,8 @@ class BuildVolume(SceneNode):
|
|||||||
|
|
||||||
# Objects loaded at the moment. We are connected to the property changed events of these objects.
|
# Objects loaded at the moment. We are connected to the property changed events of these objects.
|
||||||
self._scene_objects = set() # type: Set[SceneNode]
|
self._scene_objects = set() # type: Set[SceneNode]
|
||||||
|
# Number of toplevel printable meshes. If there is more than one, the build volume needs to take account of the gantry height in One at a Time printing.
|
||||||
|
self._root_printable_object_count = 0
|
||||||
|
|
||||||
self._scene_change_timer = QTimer()
|
self._scene_change_timer = QTimer()
|
||||||
self._scene_change_timer.setInterval(200)
|
self._scene_change_timer.setInterval(200)
|
||||||
@ -151,6 +153,7 @@ class BuildVolume(SceneNode):
|
|||||||
def _onSceneChangeTimerFinished(self):
|
def _onSceneChangeTimerFinished(self):
|
||||||
root = self._application.getController().getScene().getRoot()
|
root = self._application.getController().getScene().getRoot()
|
||||||
new_scene_objects = set(node for node in BreadthFirstIterator(root) if node.callDecoration("isSliceable"))
|
new_scene_objects = set(node for node in BreadthFirstIterator(root) if node.callDecoration("isSliceable"))
|
||||||
|
|
||||||
if new_scene_objects != self._scene_objects:
|
if new_scene_objects != self._scene_objects:
|
||||||
for node in new_scene_objects - self._scene_objects: #Nodes that were added to the scene.
|
for node in new_scene_objects - self._scene_objects: #Nodes that were added to the scene.
|
||||||
self._updateNodeListeners(node)
|
self._updateNodeListeners(node)
|
||||||
@ -166,6 +169,26 @@ class BuildVolume(SceneNode):
|
|||||||
self.rebuild()
|
self.rebuild()
|
||||||
|
|
||||||
self._scene_objects = new_scene_objects
|
self._scene_objects = new_scene_objects
|
||||||
|
|
||||||
|
# This also needs to be called when objects are grouped/ungrouped,
|
||||||
|
# which is not reflected in a change in self._scene_objects
|
||||||
|
self._updateRootPrintableObjectCount()
|
||||||
|
|
||||||
|
def _updateRootPrintableObjectCount(self):
|
||||||
|
# Get the number of models in the scene root, excluding modifier meshes and counting grouped models as 1
|
||||||
|
root = self._application.getController().getScene().getRoot()
|
||||||
|
scene_objects = set(node for node in BreadthFirstIterator(root) if node.callDecoration("isSliceable") or node.callDecoration("isGroup"))
|
||||||
|
|
||||||
|
new_root_printable_object_count = len(list(node for node in scene_objects if node.getParent() == root and not (
|
||||||
|
node_stack := node.callDecoration("getStack") and (
|
||||||
|
node.callDecoration("getStack").getProperty("anti_overhang_mesh", "value") or
|
||||||
|
node.callDecoration("getStack").getProperty("support_mesh", "value") or
|
||||||
|
node.callDecoration("getStack").getProperty("cutting_mesh", "value") or
|
||||||
|
node.callDecoration("getStack").getProperty("infill_mesh", "value")
|
||||||
|
))
|
||||||
|
))
|
||||||
|
if new_root_printable_object_count != self._root_printable_object_count:
|
||||||
|
self._root_printable_object_count = new_root_printable_object_count
|
||||||
self._onSettingPropertyChanged("print_sequence", "value") # Create fake event, so right settings are triggered.
|
self._onSettingPropertyChanged("print_sequence", "value") # Create fake event, so right settings are triggered.
|
||||||
|
|
||||||
def _updateNodeListeners(self, node: SceneNode):
|
def _updateNodeListeners(self, node: SceneNode):
|
||||||
@ -650,7 +673,7 @@ class BuildVolume(SceneNode):
|
|||||||
|
|
||||||
self._width = self._global_container_stack.getProperty("machine_width", "value")
|
self._width = self._global_container_stack.getProperty("machine_width", "value")
|
||||||
machine_height = self._global_container_stack.getProperty("machine_height", "value")
|
machine_height = self._global_container_stack.getProperty("machine_height", "value")
|
||||||
if self._global_container_stack.getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1:
|
if self._global_container_stack.getProperty("print_sequence", "value") == "one_at_a_time" and self._root_printable_object_count > 1:
|
||||||
new_height = min(self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z, machine_height)
|
new_height = min(self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z, machine_height)
|
||||||
|
|
||||||
if self._height > new_height:
|
if self._height > new_height:
|
||||||
@ -692,9 +715,12 @@ class BuildVolume(SceneNode):
|
|||||||
update_extra_z_clearance = True
|
update_extra_z_clearance = True
|
||||||
|
|
||||||
for setting_key in self._changed_settings_since_last_rebuild:
|
for setting_key in self._changed_settings_since_last_rebuild:
|
||||||
|
if setting_key in ["print_sequence", "support_mesh", "infill_mesh", "cutting_mesh", "anti_overhang_mesh"]:
|
||||||
|
self._updateRootPrintableObjectCount()
|
||||||
|
|
||||||
if setting_key == "print_sequence":
|
if setting_key == "print_sequence":
|
||||||
machine_height = self._global_container_stack.getProperty("machine_height", "value")
|
machine_height = self._global_container_stack.getProperty("machine_height", "value")
|
||||||
if self._application.getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1:
|
if self._application.getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and self._root_printable_object_count > 1:
|
||||||
new_height = min(
|
new_height = min(
|
||||||
self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z,
|
self._global_container_stack.getProperty("gantry_height", "value") * self._scale_vector.z,
|
||||||
machine_height)
|
machine_height)
|
||||||
|
@ -10,13 +10,16 @@ class VariantDatabaseHandler(DatabaseMetadataContainerController):
|
|||||||
"""The Database handler for Variant containers"""
|
"""The Database handler for Variant containers"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(SQLQueryFactory(table = "variant",
|
super().__init__(SQLQueryFactory(
|
||||||
fields = {
|
table="variant",
|
||||||
"id": "text",
|
fields={
|
||||||
"name": "text",
|
"id": "text",
|
||||||
"hardware_type": "text",
|
"name": "text",
|
||||||
"definition": "text",
|
"hardware_type": "text",
|
||||||
"version": "text",
|
"definition": "text",
|
||||||
"setting_version": "text"
|
"version": "text",
|
||||||
}))
|
"setting_version": "text",
|
||||||
|
"reference_extruder_id": "text",
|
||||||
|
},
|
||||||
|
))
|
||||||
self._container_type = InstanceContainer
|
self._container_type = InstanceContainer
|
||||||
|
@ -50,60 +50,6 @@ class MakerbotWriter(MeshWriter):
|
|||||||
{"prefix": "thumbnail", "width": 90, "height": 90},
|
{"prefix": "thumbnail", "width": 90, "height": 90},
|
||||||
]
|
]
|
||||||
_META_VERSION = "3.0.0"
|
_META_VERSION = "3.0.0"
|
||||||
_PRINT_NAME_MAP = {
|
|
||||||
"UltiMaker Method": "fire_e",
|
|
||||||
"UltiMaker Method X": "lava_f",
|
|
||||||
"UltiMaker Method XL": "magma_10",
|
|
||||||
}
|
|
||||||
_EXTRUDER_NAME_MAP = {
|
|
||||||
"1XA": "mk14_hot",
|
|
||||||
"2XA": "mk14_hot_s",
|
|
||||||
"1C": "mk14_c",
|
|
||||||
"1A": "mk14",
|
|
||||||
"2A": "mk14_s",
|
|
||||||
"LABS": "mk14_e",
|
|
||||||
}
|
|
||||||
_MATERIAL_MAP = {"2780b345-577b-4a24-a2c5-12e6aad3e690": "abs",
|
|
||||||
"88c8919c-6a09-471a-b7b6-e801263d862d": "abs-wss1",
|
|
||||||
"416eead4-0d8e-4f0b-8bfc-a91a519befa5": "asa",
|
|
||||||
"85bbae0e-938d-46fb-989f-c9b3689dc4f0": "nylon-cf",
|
|
||||||
"283d439a-3490-4481-920c-c51d8cdecf9c": "nylon",
|
|
||||||
"62414577-94d1-490d-b1e4-7ef3ec40db02": "pc",
|
|
||||||
"69386c85-5b6c-421a-bec5-aeb1fb33f060": "petg",
|
|
||||||
"0ff92885-617b-4144-a03c-9989872454bc": "pla",
|
|
||||||
"a4255da2-cb2a-4042-be49-4a83957a2f9a": "pva",
|
|
||||||
"a140ef8f-4f26-4e73-abe0-cfc29d6d1024": "wss1",
|
|
||||||
"77873465-83a9-4283-bc44-4e542b8eb3eb": "sr30",
|
|
||||||
"96fca5d9-0371-4516-9e96-8e8182677f3c": "im-pla",
|
|
||||||
"9f52c514-bb53-46a6-8c0c-d507cd6ee742": "abs",
|
|
||||||
"0f9a2a91-f9d6-4b6b-bd9b-a120a29391be": "abs",
|
|
||||||
"d3e972f2-68c0-4d2f-8cfd-91028dfc3381": "abs",
|
|
||||||
"495a0ce5-9daf-4a16-b7b2-06856d82394d": "abs-cf10",
|
|
||||||
"cb76bd6e-91fd-480c-a191-12301712ec77": "abs-wss1",
|
|
||||||
"a017777e-3f37-4d89-a96c-dc71219aac77": "abs-wss1",
|
|
||||||
"4d96000d-66de-4d54-a580-91827dcfd28f": "abs-wss1",
|
|
||||||
"0ecb0e1a-6a66-49fb-b9ea-61a8924e0cf5": "asa",
|
|
||||||
"efebc2ea-2381-4937-926f-e824524524a5": "asa",
|
|
||||||
"b0199512-5714-4951-af85-be19693430f8": "asa",
|
|
||||||
"b9f55a0a-a2b6-4b8d-8d48-07802c575bd1": "pla",
|
|
||||||
"c439d884-9cdc-4296-a12c-1bacae01003f": "pla",
|
|
||||||
"16a723e3-44df-49f4-82ec-2a1173c1e7d9": "pla",
|
|
||||||
"74d0f5c2-fdfd-4c56-baf1-ff5fa92d177e": "pla",
|
|
||||||
"64dcb783-470d-4400-91b1-7001652f20da": "pla",
|
|
||||||
"3a1b479b-899c-46eb-a2ea-67050d1a4937": "pla",
|
|
||||||
"4708ac49-5dde-4cc2-8c0a-87425a92c2b3": "pla",
|
|
||||||
"4b560eda-1719-407f-b085-1c2c1fc8ffc1": "pla",
|
|
||||||
"e10a287d-0067-4a58-9083-b7054f479991": "im-pla",
|
|
||||||
"01a6b5b0-fab1-420c-a5d9-31713cbeb404": "im-pla",
|
|
||||||
"f65df4ad-a027-4a48-a51d-975cc8b87041": "im-pla",
|
|
||||||
"f48739f8-6d96-4a3d-9a2e-8505a47e2e35": "im-pla",
|
|
||||||
"5c7d7672-e885-4452-9a78-8ba90ec79937": "petg",
|
|
||||||
"91e05a6e-2f5b-4964-b973-d83b5afe6db4": "petg",
|
|
||||||
"bdc7dd03-bf38-48ee-aeca-c3e11cee799e": "petg",
|
|
||||||
"54f66c89-998d-4070-aa60-1cb0fd887518": "nylon",
|
|
||||||
"002c84b3-84ac-4b5a-b57d-fe1f555a6351": "pva",
|
|
||||||
"e4da5fcb-f62d-48a2-aaef-0b645aa6973b": "wss1",
|
|
||||||
"77f06146-6569-437d-8380-9edb0d635a32": "sr30"}
|
|
||||||
|
|
||||||
# must be called from the main thread because of OpenGL
|
# must be called from the main thread because of OpenGL
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -198,7 +144,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
|
|
||||||
meta = dict()
|
meta = dict()
|
||||||
|
|
||||||
meta["bot_type"] = MakerbotWriter._PRINT_NAME_MAP.get((name := global_stack.definition.name), name)
|
meta["bot_type"] = global_stack.definition.getMetaDataEntry("reference_machine_id")
|
||||||
|
|
||||||
bounds: Optional[AxisAlignedBox] = None
|
bounds: Optional[AxisAlignedBox] = None
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
@ -240,12 +186,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
|
|
||||||
meta["uuid"] = print_information.slice_uuid
|
meta["uuid"] = print_information.slice_uuid
|
||||||
|
|
||||||
materials = []
|
materials = [extruder.material.getMetaData().get("reference_material_id") for extruder in extruders]
|
||||||
for extruder in extruders:
|
|
||||||
guid = extruder.material.getMetaData().get("GUID")
|
|
||||||
material_name = extruder.material.getMetaData().get("material")
|
|
||||||
material = self._MATERIAL_MAP.get(guid, material_name)
|
|
||||||
materials.append(material)
|
|
||||||
|
|
||||||
meta["material"] = materials[0]
|
meta["material"] = materials[0]
|
||||||
meta["materials"] = materials
|
meta["materials"] = materials
|
||||||
@ -257,8 +198,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
|
|
||||||
meta["model_counts"] = [{"count": 1, "name": node.getName()} for node in nodes]
|
meta["model_counts"] = [{"count": 1, "name": node.getName()} for node in nodes]
|
||||||
|
|
||||||
tool_types = [MakerbotWriter._EXTRUDER_NAME_MAP.get((name := extruder.variant.getName()), name) for extruder in
|
tool_types = [extruder.variant.getMetaDataEntry("reference_extruder_id") for extruder in extruders]
|
||||||
extruders]
|
|
||||||
meta["tool_type"] = tool_types[0]
|
meta["tool_type"] = tool_types[0]
|
||||||
meta["tool_types"] = tool_types
|
meta["tool_types"] = tool_types
|
||||||
|
|
||||||
|
@ -24,7 +24,8 @@
|
|||||||
# - Example line on LCD: 1/479 | ET 2h13m
|
# - Example line on LCD: 1/479 | ET 2h13m
|
||||||
# - Time to Pauses changes the M117/M118 lines to countdown to the next pause as 1/479 | TP 2h36m
|
# - Time to Pauses changes the M117/M118 lines to countdown to the next pause as 1/479 | TP 2h36m
|
||||||
# - 'Add M118 Line' is available with either option. M118 will bounce the message back to a remote print server through the USB connection.
|
# - 'Add M118 Line' is available with either option. M118 will bounce the message back to a remote print server through the USB connection.
|
||||||
# - Enable 'Finish-Time' Message - when enabled, takes the Print Time, adds 15 minutes for print start-up, and calculates when the print will end. It takes into account the Time Fudge Factor. The user may enter a print start time. This is also available for Display Filename.
|
# - 'Add M73 Line' is used by 'Display Progress' only. There are options to incluse M73 P(percent) and M73 R(time remaining)
|
||||||
|
# - Enable 'Finish-Time' Message - when enabled, takes the Print Time and calculates when the print will end. It takes into account the Time Fudge Factor. The user may enter a print start time. This is also available for Display Filename.
|
||||||
|
|
||||||
from ..Script import Script
|
from ..Script import Script
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
@ -34,6 +35,7 @@ import configparser
|
|||||||
from UM.Preferences import Preferences
|
from UM.Preferences import Preferences
|
||||||
import time
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
|
import math
|
||||||
from UM.Message import Message
|
from UM.Message import Message
|
||||||
|
|
||||||
class DisplayInfoOnLCD(Script):
|
class DisplayInfoOnLCD(Script):
|
||||||
@ -118,14 +120,38 @@ class DisplayInfoOnLCD(Script):
|
|||||||
"add_m118_line":
|
"add_m118_line":
|
||||||
{
|
{
|
||||||
"label": "Add M118 Line",
|
"label": "Add M118 Line",
|
||||||
"description": "Adds M118 in addition to the M117. It will bounce the message back through the USB port to a computer print server (if a printer server is enabled).",
|
"description": "Adds M118 in addition to the M117. It will bounce the message back through the USB port to a computer print server (if a printer server like Octoprint or Pronterface is in use).",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": false
|
"default_value": false
|
||||||
},
|
},
|
||||||
|
"add_m73_line":
|
||||||
|
{
|
||||||
|
"label": "Add M73 Line(s)",
|
||||||
|
"description": "Adds M73 in addition to the M117. For some firmware this will set the printers time and or percentage.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": false,
|
||||||
|
"enabled": "display_option == 'display_progress'"
|
||||||
|
},
|
||||||
|
"add_m73_percent":
|
||||||
|
{
|
||||||
|
"label": " Add M73 Percentage",
|
||||||
|
"description": "Adds M73 with the P parameter. For some firmware this will set the printers 'percentage' of layers completed and it will count upward.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": false,
|
||||||
|
"enabled": "add_m73_line and display_option == 'display_progress'"
|
||||||
|
},
|
||||||
|
"add_m73_time":
|
||||||
|
{
|
||||||
|
"label": " Add M73 Time",
|
||||||
|
"description": "Adds M73 with the R parameter. For some firmware this will set the printers 'print time' and it will count downward.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": false,
|
||||||
|
"enabled": "add_m73_line and display_option == 'display_progress'"
|
||||||
|
},
|
||||||
"speed_factor":
|
"speed_factor":
|
||||||
{
|
{
|
||||||
"label": "Time Fudge Factor %",
|
"label": "Time Fudge Factor %",
|
||||||
"description": "When using 'Display Progress' tweak this value to get better estimates. ([Actual Print Time]/[Cura Estimate]) x 100 = Time Fudge Factor. If Cura estimated 9hr and the print actually took 10hr30min then enter 117 here to adjust any estimate closer to reality. This Fudge Factor is also used to calculate the time that the print will end if you were to start it 15 minutes after slicing.",
|
"description": "When using 'Display Progress' tweak this value to get better estimates. ([Actual Print Time]/[Cura Estimate]) x 100 = Time Fudge Factor. If Cura estimated 9hr and the print actually took 10hr30min then enter 117 here to adjust any estimate closer to reality. This Fudge Factor is also used to calculate the print finish time.",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"unit": "%",
|
"unit": "%",
|
||||||
"default_value": 100,
|
"default_value": 100,
|
||||||
@ -134,7 +160,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
"countdown_to_pause":
|
"countdown_to_pause":
|
||||||
{
|
{
|
||||||
"label": "Countdown to Pauses",
|
"label": "Countdown to Pauses",
|
||||||
"description": "When enabled - DisplayInfoOnLCD must run AFTER all PauseAtHeight and Filament Change scripts. Instead of layer number and remaining print time the LCD will show 'layers remaining before pause/filament change and the time to pause/filament change' (TP).",
|
"description": "Instead of the remaining print time the LCD will show the estimated time to pause (TP).",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "display_option == 'display_progress'"
|
"enabled": "display_option == 'display_progress'"
|
||||||
@ -142,7 +168,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
"enable_end_message":
|
"enable_end_message":
|
||||||
{
|
{
|
||||||
"label": "Enable 'Finish-Time' Message",
|
"label": "Enable 'Finish-Time' Message",
|
||||||
"description": "Get a message when you save a fresh slice. It will show the estimated date and time that the print would finish (with a 15 minute lag from the end of slicing to the start of the print).",
|
"description": "Get a message when you save a fresh slice. It will show the estimated date and time that the print would finish.",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": true,
|
"default_value": true,
|
||||||
"enabled": true
|
"enabled": true
|
||||||
@ -150,7 +176,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
"print_start_time":
|
"print_start_time":
|
||||||
{
|
{
|
||||||
"label": "Print Start Time (Ex 16:45)",
|
"label": "Print Start Time (Ex 16:45)",
|
||||||
"description": "Use 'Military' time. 16:45 would be 4:45PM. 09:30 would be 9:30AM. If you leave this blank it will be assumed that the print start will 15 minutes after slicing.",
|
"description": "Use 'Military' time. 16:45 would be 4:45PM. 09:30 would be 9:30AM. If you leave this blank it will be assumed that the print will start Now. If you enter a guesstimate of your printer start time and that time is before 'Now' the guesstimate will consider that the print will start tomorrow at the entered time. ",
|
||||||
"type": "str",
|
"type": "str",
|
||||||
"default_value": "",
|
"default_value": "",
|
||||||
"unit": "hrs ",
|
"unit": "hrs ",
|
||||||
@ -163,6 +189,9 @@ class DisplayInfoOnLCD(Script):
|
|||||||
def execute(self, data):
|
def execute(self, data):
|
||||||
display_option = self.getSettingValueByKey("display_option")
|
display_option = self.getSettingValueByKey("display_option")
|
||||||
add_m118_line = self.getSettingValueByKey("add_m118_line")
|
add_m118_line = self.getSettingValueByKey("add_m118_line")
|
||||||
|
add_m73_line = self.getSettingValueByKey("add_m73_line")
|
||||||
|
add_m73_time = self.getSettingValueByKey("add_m73_time")
|
||||||
|
add_m73_percent = self.getSettingValueByKey("add_m73_percent")
|
||||||
|
|
||||||
# This is Display Filename and Layer on LCD---------------------------------------------------------
|
# This is Display Filename and Layer on LCD---------------------------------------------------------
|
||||||
if display_option == "filename_layer":
|
if display_option == "filename_layer":
|
||||||
@ -217,6 +246,12 @@ class DisplayInfoOnLCD(Script):
|
|||||||
display_total_layers = self.getSettingValueByKey("display_total_layers")
|
display_total_layers = self.getSettingValueByKey("display_total_layers")
|
||||||
display_remaining_time = self.getSettingValueByKey("display_remaining_time")
|
display_remaining_time = self.getSettingValueByKey("display_remaining_time")
|
||||||
speed_factor = self.getSettingValueByKey("speed_factor") / 100
|
speed_factor = self.getSettingValueByKey("speed_factor") / 100
|
||||||
|
m73_time = False
|
||||||
|
m73_percent = False
|
||||||
|
if add_m73_line and add_m73_time:
|
||||||
|
m73_time = True
|
||||||
|
if add_m73_line and add_m73_percent:
|
||||||
|
m73_percent = True
|
||||||
# initialize global variables
|
# initialize global variables
|
||||||
first_layer_index = 0
|
first_layer_index = 0
|
||||||
time_total = 0
|
time_total = 0
|
||||||
@ -235,27 +270,26 @@ class DisplayInfoOnLCD(Script):
|
|||||||
mmm = round((hhh % 1) * 60)
|
mmm = round((hhh % 1) * 60)
|
||||||
orig_hhh = cura_time/3600
|
orig_hhh = cura_time/3600
|
||||||
orig_hr = round(orig_hhh // 1)
|
orig_hr = round(orig_hhh // 1)
|
||||||
orig_min = int((cura_time - (orig_hr * 3600))/60) # Not rounded up
|
orig_mmm = math.floor((orig_hhh % 1) * 60)
|
||||||
orig_mmm = round((orig_hhh % 1) * 60) # Rounded up
|
orig_sec = round((((orig_hhh % 1) * 60) % 1) * 60)
|
||||||
orig_sec = round(cura_time - orig_hr * 3600 - orig_min * 60)
|
|
||||||
if add_m118_line: lines.insert(tindex + 3,"M118 Adjusted Print Time " + str(hr) + "hr " + str(mmm) + "min")
|
if add_m118_line: lines.insert(tindex + 3,"M118 Adjusted Print Time " + str(hr) + "hr " + str(mmm) + "min")
|
||||||
lines.insert(tindex + 3,"M117 ET " + str(hr) + "hr " + str(mmm) + "min")
|
lines.insert(tindex + 3,"M117 ET " + str(hr) + "hr " + str(mmm) + "min")
|
||||||
# If Countdown to pause is enabled then count the pauses and/or filament changes
|
# add M73 line at beginning
|
||||||
|
mins = int(60 * hr + mmm)
|
||||||
|
if m73_time:
|
||||||
|
lines.insert(tindex + 3, "M73 R{}".format(mins))
|
||||||
|
if m73_percent:
|
||||||
|
lines.insert(tindex + 3, "M73 P0")
|
||||||
|
# If Countdonw to pause is enabled then count the pauses
|
||||||
pause_str = ""
|
pause_str = ""
|
||||||
if bool(self.getSettingValueByKey("countdown_to_pause")):
|
if bool(self.getSettingValueByKey("countdown_to_pause")):
|
||||||
pause_count = 0
|
pause_count = 0
|
||||||
filament_change_count = 0
|
|
||||||
for num in range(2,len(data) - 1, 1):
|
for num in range(2,len(data) - 1, 1):
|
||||||
if "PauseAtHeight.py" in data[num]:
|
if "PauseAtHeight.py" in data[num]:
|
||||||
pause_count += 1
|
pause_count += 1
|
||||||
if "M600" in data[num]:
|
|
||||||
filament_change_count += 1
|
|
||||||
if pause_count > 0:
|
|
||||||
pause_str = f" with {pause_count} pause(s)"
|
pause_str = f" with {pause_count} pause(s)"
|
||||||
if filament_change_count > 0:
|
|
||||||
pause_str += f" and {filament_change_count} filament change(s)"
|
|
||||||
# This line goes in to convert seconds to hours and minutes
|
# This line goes in to convert seconds to hours and minutes
|
||||||
lines.insert(tindex + 3, f";Cura Time Estimate: {cura_time}sec = {orig_hr}hr {orig_min}min {orig_sec}sec {pause_str}")
|
lines.insert(tindex + 3, f";Cura Time Estimate: {cura_time}sec = {orig_hr}hr {orig_mmm}min {orig_sec}sec {pause_str}")
|
||||||
data[0] = "\n".join(lines)
|
data[0] = "\n".join(lines)
|
||||||
data[len(data)-1] += "M117 Orig Cura Est " + str(orig_hr) + "hr " + str(orig_mmm) + "min\n"
|
data[len(data)-1] += "M117 Orig Cura Est " + str(orig_hr) + "hr " + str(orig_mmm) + "min\n"
|
||||||
if add_m118_line: data[len(data)-1] += "M118 Est w/FudgeFactor " + str(speed_factor * 100) + "% was " + str(hr) + "hr " + str(mmm) + "min\n"
|
if add_m118_line: data[len(data)-1] += "M118 Est w/FudgeFactor " + str(speed_factor * 100) + "% was " + str(hr) + "hr " + str(mmm) + "min\n"
|
||||||
@ -322,6 +356,12 @@ class DisplayInfoOnLCD(Script):
|
|||||||
for l_index, line in enumerate(lines):
|
for l_index, line in enumerate(lines):
|
||||||
if line.startswith(";LAYER:"):
|
if line.startswith(";LAYER:"):
|
||||||
lines[l_index] += "\nM117 " + display_text
|
lines[l_index] += "\nM117 " + display_text
|
||||||
|
# add M73 line
|
||||||
|
mins = int(60 * h + m)
|
||||||
|
if m73_time:
|
||||||
|
lines[l_index] += "\nM73 R{}".format(mins)
|
||||||
|
if m73_percent:
|
||||||
|
lines[l_index] += "\nM73 P" + str(round(int(current_layer) / int(number_of_layers) * 100))
|
||||||
if add_m118_line:
|
if add_m118_line:
|
||||||
lines[l_index] += "\nM118 " + display_text
|
lines[l_index] += "\nM118 " + display_text
|
||||||
break
|
break
|
||||||
@ -344,7 +384,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
if line.startswith(";TIME_ELAPSED:"):
|
if line.startswith(";TIME_ELAPSED:"):
|
||||||
this_time = (float(line.split(":")[1]))*speed_factor
|
this_time = (float(line.split(":")[1]))*speed_factor
|
||||||
time_list.append(str(this_time))
|
time_list.append(str(this_time))
|
||||||
if "PauseAtHeight.py" in layer or "M600" in layer:
|
if "PauseAtHeight.py" in layer:
|
||||||
for qnum in range(num - 1, pause_index, -1):
|
for qnum in range(num - 1, pause_index, -1):
|
||||||
time_list[qnum] = str(float(this_time) - float(time_list[qnum])) + "P"
|
time_list[qnum] = str(float(this_time) - float(time_list[qnum])) + "P"
|
||||||
pause_index = num-1
|
pause_index = num-1
|
||||||
@ -380,7 +420,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
def message_to_user(self, speed_factor: float):
|
def message_to_user(self, speed_factor: float):
|
||||||
# Message the user of the projected finish time of the print (figuring a 15 minute delay from end-of-slice to start-of-print
|
# Message the user of the projected finish time of the print
|
||||||
print_time = Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.ISO8601)
|
print_time = Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.ISO8601)
|
||||||
print_start_time = self.getSettingValueByKey("print_start_time")
|
print_start_time = self.getSettingValueByKey("print_start_time")
|
||||||
# If the user entered a print start time make sure it is in the correct format or ignore it.
|
# If the user entered a print start time make sure it is in the correct format or ignore it.
|
||||||
@ -391,12 +431,10 @@ class DisplayInfoOnLCD(Script):
|
|||||||
hr = int(print_start_time.split(":")[0])
|
hr = int(print_start_time.split(":")[0])
|
||||||
min = int(print_start_time.split(":")[1])
|
min = int(print_start_time.split(":")[1])
|
||||||
sec = 0
|
sec = 0
|
||||||
fifteen_minute_delay = 0
|
|
||||||
else:
|
else:
|
||||||
hr = int(time.strftime("%H"))
|
hr = int(time.strftime("%H"))
|
||||||
min = int(time.strftime("%M"))
|
min = int(time.strftime("%M"))
|
||||||
sec = int(time.strftime("%S"))
|
sec = int(time.strftime("%S"))
|
||||||
fifteen_minute_delay = 900
|
|
||||||
|
|
||||||
#Get the current data/time info
|
#Get the current data/time info
|
||||||
yr = int(time.strftime("%Y"))
|
yr = int(time.strftime("%Y"))
|
||||||
@ -409,7 +447,7 @@ class DisplayInfoOnLCD(Script):
|
|||||||
pr_min = int(print_time.split(":")[1])
|
pr_min = int(print_time.split(":")[1])
|
||||||
pr_sec = int(print_time.split(":")[2])
|
pr_sec = int(print_time.split(":")[2])
|
||||||
#Adjust the print time if none was entered
|
#Adjust the print time if none was entered
|
||||||
print_seconds = pr_hr*3600 + pr_min*60 + pr_sec + fifteen_minute_delay
|
print_seconds = pr_hr*3600 + pr_min*60 + pr_sec
|
||||||
#Adjust the total seconds by the Fudge Factor
|
#Adjust the total seconds by the Fudge Factor
|
||||||
adjusted_print_time = print_seconds * speed_factor
|
adjusted_print_time = print_seconds * speed_factor
|
||||||
#Break down the adjusted seconds back into hh:mm:ss
|
#Break down the adjusted seconds back into hh:mm:ss
|
||||||
@ -435,13 +473,13 @@ class DisplayInfoOnLCD(Script):
|
|||||||
show_hr = str(new_time.strftime("%H")) + ":"
|
show_hr = str(new_time.strftime("%H")) + ":"
|
||||||
show_ampm = " AM"
|
show_ampm = " AM"
|
||||||
if print_start_time == "":
|
if print_start_time == "":
|
||||||
start_str = "and a 15 minute lag between saving the file and starting the print."
|
start_str = "Now"
|
||||||
else:
|
else:
|
||||||
start_str = "and your entered 'print start time' of " + print_start_time + "hrs."
|
start_str = "and your entered 'print start time' of " + print_start_time + "hrs."
|
||||||
if print_start_time != "":
|
if print_start_time != "":
|
||||||
print_start_str = "Print Start Time................." + str(print_start_time) + "hrs"
|
print_start_str = "Print Start Time................." + str(print_start_time) + "hrs"
|
||||||
else:
|
else:
|
||||||
print_start_str = "Print Start Time.................15 minutes from now."
|
print_start_str = "Print Start Time.................Now."
|
||||||
estimate_str = "Cura Time Estimate.........." + str(print_time)
|
estimate_str = "Cura Time Estimate.........." + str(print_time)
|
||||||
adjusted_str = "Adjusted Time Estimate..." + str(time_change)
|
adjusted_str = "Adjusted Time Estimate..." + str(time_change)
|
||||||
finish_str = week_day + " " + str(mo_str) + " " + str(new_time.strftime("%d")) + ", " + str(new_time.strftime("%Y")) + " at " + str(show_hr) + str(new_time.strftime("%M")) + str(show_ampm)
|
finish_str = week_day + " " + str(mo_str) + " " + str(new_time.strftime("%d")) + ", " + str(new_time.strftime("%Y")) + " at " + str(show_hr) + str(new_time.strftime("%M")) + str(show_ampm)
|
||||||
|
@ -130,8 +130,7 @@
|
|||||||
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
||||||
"support_interface_density": { "value": 33.333 },
|
"support_interface_density": { "value": 33.333 },
|
||||||
"support_interface_height": { "value": "layer_height * 3" },
|
"support_interface_height": { "value": "layer_height * 3" },
|
||||||
"support_interface_pattern": { "value": "zigzag" },
|
"support_interface_pattern": { "value": "'zigzag'" },
|
||||||
"support_interface_skip_height": { "value": 0.2 },
|
|
||||||
"support_pattern": { "value": "'zigzag'" },
|
"support_pattern": { "value": "'zigzag'" },
|
||||||
"support_wall_count": { "value": 0 },
|
"support_wall_count": { "value": 0 },
|
||||||
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
||||||
|
@ -131,8 +131,7 @@
|
|||||||
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
||||||
"support_interface_density": { "value": 33.333 },
|
"support_interface_density": { "value": 33.333 },
|
||||||
"support_interface_height": { "value": "layer_height * 3" },
|
"support_interface_height": { "value": "layer_height * 3" },
|
||||||
"support_interface_pattern": { "value": "zigzag" },
|
"support_interface_pattern": { "value": "'zigzag'" },
|
||||||
"support_interface_skip_height": { "value": 0.2 },
|
|
||||||
"support_pattern": { "value": "'zigzag'" },
|
"support_pattern": { "value": "'zigzag'" },
|
||||||
"support_wall_count": { "value": 0 },
|
"support_wall_count": { "value": 0 },
|
||||||
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
||||||
|
@ -118,8 +118,7 @@
|
|||||||
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
"support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
|
||||||
"support_interface_density": { "value": 33.333 },
|
"support_interface_density": { "value": 33.333 },
|
||||||
"support_interface_height": { "value": "layer_height * 3" },
|
"support_interface_height": { "value": "layer_height * 3" },
|
||||||
"support_interface_pattern": { "value": "zigzag" },
|
"support_interface_pattern": { "value": "'zigzag'" },
|
||||||
"support_interface_skip_height": { "value": 0.2 },
|
|
||||||
"support_pattern": { "value": "'zigzag'" },
|
"support_pattern": { "value": "'zigzag'" },
|
||||||
"support_wall_count": { "value": 0 },
|
"support_wall_count": { "value": 0 },
|
||||||
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
|
||||||
|
@ -59,7 +59,7 @@
|
|||||||
"machine_width": { "default_value": 280 },
|
"machine_width": { "default_value": 280 },
|
||||||
"material_diameter": { "default_value": 1.75 },
|
"material_diameter": { "default_value": 1.75 },
|
||||||
"material_initial_print_temperature": { "value": "material_print_temperature" },
|
"material_initial_print_temperature": { "value": "material_print_temperature" },
|
||||||
"prime_tower_min_volume": { "value": "((resolveOrValue('layer_height'))/2" },
|
"prime_tower_min_volume": { "value": "resolveOrValue('layer_height')/2" },
|
||||||
"prime_tower_size": { "value": "30" },
|
"prime_tower_size": { "value": "30" },
|
||||||
"prime_tower_wipe_enabled": { "default_value": true },
|
"prime_tower_wipe_enabled": { "default_value": true },
|
||||||
"retraction_amount": { "default_value": 5 },
|
"retraction_amount": { "default_value": 5 },
|
||||||
|
90
resources/definitions/anycubic_kobra2.def.json
Normal file
90
resources/definitions/anycubic_kobra2.def.json
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anycubic Kobra 2",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "ThatGuyZim",
|
||||||
|
"manufacturer": "Anycubic",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform": "anycubic_kobra2_platform.stl",
|
||||||
|
"machine_extruder_trains": { "0": "anycubic_kobra2_extruder_0" }
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled": { "value": true },
|
||||||
|
"acceleration_print": { "value": 2500 },
|
||||||
|
"acceleration_travel": { "value": 3000 },
|
||||||
|
"acceleration_travel_layer_0": { "value": "acceleration_travel" },
|
||||||
|
"gantry_height": { "value": "0" },
|
||||||
|
"infill_before_walls": { "value": false },
|
||||||
|
"jerk_enabled": { "value": true },
|
||||||
|
"jerk_print": { "value": 8 },
|
||||||
|
"jerk_travel": { "value": 10 },
|
||||||
|
"jerk_travel_layer_0": { "value": "jerk_travel" },
|
||||||
|
"layer_height": { "default_value": 0.2 },
|
||||||
|
"machine_center_is_zero": { "default_value": false },
|
||||||
|
"machine_depth": { "default_value": 220 },
|
||||||
|
"machine_end_gcode": { "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM107 ; fan off\nG91 ;relative positioning\nG1 E-2 F3000 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 F3000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 F3000 ;move X/Y to min endstops, so the head is out of the way\nG1 Y210 F3000\nM84 ;steppers off\nG90\nM300 S1318 P266" },
|
||||||
|
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 250 },
|
||||||
|
"machine_max_acceleration_e": { "value": 2500 },
|
||||||
|
"machine_max_acceleration_x": { "value": 2500 },
|
||||||
|
"machine_max_acceleration_y": { "value": 2500 },
|
||||||
|
"machine_max_acceleration_z": { "value": 800 },
|
||||||
|
"machine_max_feedrate_e": { "default_value": 100 },
|
||||||
|
"machine_max_feedrate_x": { "default_value": 300 },
|
||||||
|
"machine_max_feedrate_y": { "default_value": 250 },
|
||||||
|
"machine_max_feedrate_z": { "default_value": 40 },
|
||||||
|
"machine_max_jerk_e": { "value": 10 },
|
||||||
|
"machine_max_jerk_xy": { "value": 10 },
|
||||||
|
"machine_max_jerk_z": { "value": 2 },
|
||||||
|
"machine_name": { "default_value": "Anycubic Kobra 2" },
|
||||||
|
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ; use absolute coordinates\nM82 ; use absolute distances for extrusion\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all axes\nM300 S1318 P266\nG1 Z5 F5000 ; lift nozzle\nG1 X5 Y0 F3000\nG1 Z0.3 ; set nozzle height\nG92 E0\nG1 X50 Y0 E20 F500 ; Extrude 20mm of filament in a 5cm line \nG92 E0 ; zero the extruded length again \nG1 E-4.5 F4800 ; Retract a little \nG92 E0\nG1 X120 F4000 ; Quickly wipe away from the filament line\nM117 ; Printing\u2026\nG5" },
|
||||||
|
"machine_width": { "default_value": 220 },
|
||||||
|
"material_bed_temperature": { "maximum_value_warning": 110 },
|
||||||
|
"material_bed_temperature_layer_0": { "maximum_value_warning": 110 },
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"material_final_print_temperature": { "value": "material_print_temperature" },
|
||||||
|
"material_initial_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": 260,
|
||||||
|
"value": "material_print_temperature + 5"
|
||||||
|
},
|
||||||
|
"material_print_temperature": { "maximum_value_warning": 260 },
|
||||||
|
"material_print_temperature_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": 260,
|
||||||
|
"value": "material_print_temperature + 5"
|
||||||
|
},
|
||||||
|
"retraction_amount": { "value": 2 },
|
||||||
|
"retraction_combing": { "value": "'off'" },
|
||||||
|
"retraction_combing_max_distance": { "value": 30 },
|
||||||
|
"retraction_min_travel": { "value": 1 },
|
||||||
|
"retraction_prime_speed": { "maximum_value_warning": 100 },
|
||||||
|
"retraction_retract_speed": { "maximum_value_warning": 100 },
|
||||||
|
"retraction_speed":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": 100,
|
||||||
|
"value": 80
|
||||||
|
},
|
||||||
|
"speed_print": { "value": 80 },
|
||||||
|
"speed_support": { "value": "speed_wall_0" },
|
||||||
|
"speed_support_interface": { "value": "speed_topbottom" },
|
||||||
|
"speed_travel":
|
||||||
|
{
|
||||||
|
"maximum_value": 200.0,
|
||||||
|
"maximum_value_warning": 175.0,
|
||||||
|
"value": 125
|
||||||
|
},
|
||||||
|
"speed_travel_layer_0": { "value": "speed_travel" },
|
||||||
|
"speed_wall_x": { "value": "speed_wall" },
|
||||||
|
"top_bottom_pattern": { "default_value": "zigzag" },
|
||||||
|
"travel_avoid_supports": { "value": true },
|
||||||
|
"travel_retract_before_outer_wall": { "value": true },
|
||||||
|
"wall_line_count": { "value": 3 },
|
||||||
|
"wall_thickness": { "value": 1.2 }
|
||||||
|
}
|
||||||
|
}
|
@ -20,15 +20,18 @@
|
|||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"gantry_height": { "value": 25 },
|
"gantry_height": { "value": 38 },
|
||||||
"machine_depth": { "default_value": 220 },
|
"machine_depth": { "default_value": 220 },
|
||||||
"machine_head_with_fans_polygon":
|
"machine_head_with_fans_polygon":
|
||||||
{
|
{
|
||||||
"default_value": [
|
"default_value": [
|
||||||
[-20, 10],
|
[-36, -18],
|
||||||
[10, 10],
|
[-20, -42],
|
||||||
[10, -10],
|
[6, -42],
|
||||||
[-20, -10]
|
[30, -18],
|
||||||
|
[30, 52],
|
||||||
|
[-3, 56],
|
||||||
|
[-36, 52]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
@ -41,10 +41,9 @@
|
|||||||
"infill_line_width": { "value": "line_width + 0.1" },
|
"infill_line_width": { "value": "line_width + 0.1" },
|
||||||
"infill_overlap": { "value": 30 },
|
"infill_overlap": { "value": 30 },
|
||||||
"infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
|
"infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
|
||||||
"infill_sparse_density": { "value": 20 },
|
|
||||||
"infill_wipe_dist": { "value": 0.0 },
|
"infill_wipe_dist": { "value": 0.0 },
|
||||||
"layer_height_0": { "value": 0.2 },
|
"layer_height_0": { "value": 0.2 },
|
||||||
"machine_buildplate_type": { "value": "glass" },
|
"machine_buildplate_type": { "value": "'glass'" },
|
||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"machine_end_gcode": { "default_value": "G91 ;use relative coordinates\nG1 E-4 F1500 ;retract the filament\nG1 X5 Y5 Z0.2 F5000 ;wipe\nG1 Z5 F1500 ;raise z\nG90 ;use absolute coordinates\nG1 X10 Y{machine_depth} F5000 ;park print head\n\nM107 ;turn off fan\nM104 S0 ;turn off hotend\nM140 S0 ;turn off heatbed\nM84 ;disable motors" },
|
"machine_end_gcode": { "default_value": "G91 ;use relative coordinates\nG1 E-4 F1500 ;retract the filament\nG1 X5 Y5 Z0.2 F5000 ;wipe\nG1 Z5 F1500 ;raise z\nG90 ;use absolute coordinates\nG1 X10 Y{machine_depth} F5000 ;park print head\n\nM107 ;turn off fan\nM104 S0 ;turn off hotend\nM140 S0 ;turn off heatbed\nM84 ;disable motors" },
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
48
resources/definitions/flyingbear_ghost_6.def.json
Normal file
48
resources/definitions/flyingbear_ghost_6.def.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Flying Bear Ghost 6",
|
||||||
|
"inherits": "flyingbear_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "barrnet",
|
||||||
|
"platform": "flyingbear_platform.obj",
|
||||||
|
"platform_texture": "flyingbear_platform.png",
|
||||||
|
"quality_definition": "flyingbear_base"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled": { "value": false },
|
||||||
|
"acceleration_print": { "value": 1500 },
|
||||||
|
"acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" },
|
||||||
|
"acceleration_travel": { "value": 3000 },
|
||||||
|
"acceleration_travel_layer_0": { "value": "acceleration_travel" },
|
||||||
|
"jerk_enabled": { "value": false },
|
||||||
|
"jerk_print": { "value": 20 },
|
||||||
|
"jerk_travel": { "value": "jerk_print" },
|
||||||
|
"jerk_travel_layer_0": { "value": "jerk_travel" },
|
||||||
|
"machine_acceleration": { "value": 1500 },
|
||||||
|
"machine_depth": { "default_value": 210 },
|
||||||
|
"machine_height": { "default_value": 210 },
|
||||||
|
"machine_max_acceleration_e": { "value": 80000 },
|
||||||
|
"machine_max_acceleration_x": { "value": 1000 },
|
||||||
|
"machine_max_acceleration_y": { "value": 1000 },
|
||||||
|
"machine_max_acceleration_z": { "value": 200 },
|
||||||
|
"machine_max_feedrate_e": { "value": 70 },
|
||||||
|
"machine_max_feedrate_x": { "value": 200 },
|
||||||
|
"machine_max_feedrate_y": { "value": 200 },
|
||||||
|
"machine_max_feedrate_z": { "value": 20 },
|
||||||
|
"machine_max_jerk_e": { "value": 5.0 },
|
||||||
|
"machine_max_jerk_xy": { "value": 15 },
|
||||||
|
"machine_max_jerk_z": { "value": 0.4 },
|
||||||
|
"machine_name": { "default_value": "Flying Bear Ghost 6" },
|
||||||
|
"machine_steps_per_mm_e": { "default_value": 405 },
|
||||||
|
"machine_steps_per_mm_x": { "default_value": 160 },
|
||||||
|
"machine_steps_per_mm_y": { "default_value": 160 },
|
||||||
|
"machine_steps_per_mm_z": { "default_value": 800 },
|
||||||
|
"machine_width": { "default_value": 255 },
|
||||||
|
"retraction_amount": { "value": 0.8 },
|
||||||
|
"retraction_extrusion_window": { "value": 1.5 },
|
||||||
|
"retraction_speed": { "default_value": 35 }
|
||||||
|
}
|
||||||
|
}
|
@ -20,10 +20,9 @@
|
|||||||
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
|
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
|
||||||
"cool_min_layer_time": { "value": 10 },
|
"cool_min_layer_time": { "value": 10 },
|
||||||
"gantry_height": { "value": 40 },
|
"gantry_height": { "value": 40 },
|
||||||
"jerk_enabled": { "value": false },
|
|
||||||
"jerk_print": { "value": 8 },
|
"jerk_print": { "value": 8 },
|
||||||
"jerk_travel": { "value": "jerk_print" },
|
"jerk_travel": { "value": "jerk_print" },
|
||||||
"jerk_travel_layer_0": { "value": " jerk_travel" },
|
"jerk_travel_layer_0": { "value": "jerk_travel" },
|
||||||
"machine_depth": { "default_value": 235 },
|
"machine_depth": { "default_value": 235 },
|
||||||
"machine_end_gcode": { "default_value": "; SC-10 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
|
"machine_end_gcode": { "default_value": "; SC-10 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
|
||||||
"machine_head_with_fans_polygon":
|
"machine_head_with_fans_polygon":
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
"minimum_value_warning": "0.01"
|
"minimum_value_warning": "0.01"
|
||||||
},
|
},
|
||||||
"retraction_amount": { "default_value": 2 },
|
"retraction_amount": { "default_value": 2 },
|
||||||
"retraction_combing": { "value": "off" },
|
"retraction_combing": { "value": "'off'" },
|
||||||
"retraction_combing_max_distance": { "default_value": 0.5 },
|
"retraction_combing_max_distance": { "default_value": 0.5 },
|
||||||
"retraction_count_max": { "default_value": 100 },
|
"retraction_count_max": { "default_value": 100 },
|
||||||
"retraction_extrusion_window":
|
"retraction_extrusion_window":
|
||||||
|
@ -82,6 +82,6 @@
|
|||||||
"travel_avoid_supports": { "value": true },
|
"travel_avoid_supports": { "value": true },
|
||||||
"travel_retract_before_outer_wall": { "value": true },
|
"travel_retract_before_outer_wall": { "value": true },
|
||||||
"wall_thickness": { "value": "line_width * 2" },
|
"wall_thickness": { "value": "line_width * 2" },
|
||||||
"z_seam_corner": { "value": "z_seam_corner_weighted" }
|
"z_seam_corner": { "value": "'z_seam_corner_weighted'" }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -82,6 +82,6 @@
|
|||||||
"travel_avoid_supports": { "value": true },
|
"travel_avoid_supports": { "value": true },
|
||||||
"travel_retract_before_outer_wall": { "value": true },
|
"travel_retract_before_outer_wall": { "value": true },
|
||||||
"wall_thickness": { "value": "line_width * 2" },
|
"wall_thickness": { "value": "line_width * 2" },
|
||||||
"z_seam_corner": { "value": "z_seam_corner_weighted" }
|
"z_seam_corner": { "value": "'z_seam_corner_weighted'" }
|
||||||
}
|
}
|
||||||
}
|
}
|
18
resources/definitions/multicomp_mcpi200.def.json
Normal file
18
resources/definitions/multicomp_mcpi200.def.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Multicomp Pro MCPI-200",
|
||||||
|
"inherits": "goofoo_near",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Woosh",
|
||||||
|
"manufacturer": "Multicomp Pro"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_depth": { "default_value": 200 },
|
||||||
|
"machine_height": { "default_value": 200 },
|
||||||
|
"machine_name": { "default_value": "Multicomp Pro MCPI-200" },
|
||||||
|
"machine_width": { "default_value": 200 }
|
||||||
|
}
|
||||||
|
}
|
18
resources/definitions/renkforce_pro10plus.def.json
Normal file
18
resources/definitions/renkforce_pro10plus.def.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Renkforce Pro 10+",
|
||||||
|
"inherits": "goofoo_near",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Woosh (based on RF100.ini by Conrad Electronic SE)",
|
||||||
|
"manufacturer": "Renkforce"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_depth": { "default_value": 360 },
|
||||||
|
"machine_height": { "default_value": 400 },
|
||||||
|
"machine_name": { "default_value": "Renkforce Pro 10+" },
|
||||||
|
"machine_width": { "default_value": 360 }
|
||||||
|
}
|
||||||
|
}
|
@ -13,8 +13,6 @@
|
|||||||
"machine_acceleration": { "value": 1000 },
|
"machine_acceleration": { "value": 1000 },
|
||||||
"machine_max_feedrate_e": { "value": 40 },
|
"machine_max_feedrate_e": { "value": 40 },
|
||||||
"machine_max_jerk_xy": { "value": 5 },
|
"machine_max_jerk_xy": { "value": 5 },
|
||||||
"material_print_temperature": { "value": 195 },
|
|
||||||
"retraction_speed": { "default_value": 30 },
|
|
||||||
"z_seam_corner": { "value": "'z_seam_corner_weighted'" }
|
"z_seam_corner": { "value": "'z_seam_corner_weighted'" }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -75,6 +75,7 @@
|
|||||||
"preferred_material": "ultimaker_absr_175",
|
"preferred_material": "ultimaker_absr_175",
|
||||||
"preferred_quality_type": "draft",
|
"preferred_quality_type": "draft",
|
||||||
"preferred_variant_name": "1XA",
|
"preferred_variant_name": "1XA",
|
||||||
|
"reference_machine_id": "lava_f",
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variant_definition": "ultimaker_methodx",
|
"variant_definition": "ultimaker_methodx",
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
],
|
],
|
||||||
"platform_texture": "MakerbotMethod.png",
|
"platform_texture": "MakerbotMethod.png",
|
||||||
"preferred_quality_type": "draft",
|
"preferred_quality_type": "draft",
|
||||||
|
"reference_machine_id": "magma_10",
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Extruder",
|
"variants_name": "Extruder",
|
||||||
|
@ -47,10 +47,8 @@
|
|||||||
"infill_enable_travel_optimization": { "value": "True" },
|
"infill_enable_travel_optimization": { "value": "True" },
|
||||||
"infill_line_width": { "value": "round(line_width * 1.1, 2)" },
|
"infill_line_width": { "value": "round(line_width * 1.1, 2)" },
|
||||||
"infill_pattern": { "value": "'gyroid'" },
|
"infill_pattern": { "value": "'gyroid'" },
|
||||||
"initial_layer_line_width_factor": { "value": "100" },
|
|
||||||
"layer_height_0": { "value": "layer_height" },
|
"layer_height_0": { "value": "layer_height" },
|
||||||
"line_width": { "value": "machine_nozzle_size" },
|
"machine_buildplate_type": { "value": "'glass'" },
|
||||||
"machine_buildplate_type": { "value": "glass" },
|
|
||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"machine_depth": { "default_value": 220 },
|
"machine_depth": { "default_value": 220 },
|
||||||
"machine_end_gcode": { "default_value": "G91\nG1 E-1 F600\nG1 Z+1 E-3 X-20 Y-20 F4800\nM104 S0\nM106 S0\nM140 S0\nM220 S100\nM221 S100\nG28\nG90\nM84\n;\n" },
|
"machine_end_gcode": { "default_value": "G91\nG1 E-1 F600\nG1 Z+1 E-3 X-20 Y-20 F4800\nM104 S0\nM106 S0\nM140 S0\nM220 S100\nM221 S100\nG28\nG90\nM84\n;\n" },
|
||||||
|
@ -222,7 +222,7 @@
|
|||||||
"raft_surface_speed": { "value": 40.0 },
|
"raft_surface_speed": { "value": 40.0 },
|
||||||
"raft_surface_thickness": { "value": 0.25 },
|
"raft_surface_thickness": { "value": 0.25 },
|
||||||
"retraction_amount": { "default_value": 3 },
|
"retraction_amount": { "default_value": 3 },
|
||||||
"retraction_combing": { "value": "off" },
|
"retraction_combing": { "value": "'off'" },
|
||||||
"retraction_extrusion_window": { "value": 1.0 },
|
"retraction_extrusion_window": { "value": 1.0 },
|
||||||
"retraction_hop_after_extruder_switch": { "default_value": false },
|
"retraction_hop_after_extruder_switch": { "default_value": false },
|
||||||
"retraction_min_travel": { "value": 0.8 },
|
"retraction_min_travel": { "value": 0.8 },
|
||||||
|
@ -46,10 +46,8 @@
|
|||||||
"infill_enable_travel_optimization": { "value": "True" },
|
"infill_enable_travel_optimization": { "value": "True" },
|
||||||
"infill_line_width": { "value": "round(line_width * 1.1, 2)" },
|
"infill_line_width": { "value": "round(line_width * 1.1, 2)" },
|
||||||
"infill_pattern": { "value": "'gyroid'" },
|
"infill_pattern": { "value": "'gyroid'" },
|
||||||
"initial_layer_line_width_factor": { "value": "100" },
|
|
||||||
"layer_height_0": { "value": "layer_height" },
|
"layer_height_0": { "value": "layer_height" },
|
||||||
"line_width": { "value": "machine_nozzle_size" },
|
"machine_buildplate_type": { "value": "'glass'" },
|
||||||
"machine_buildplate_type": { "value": "glass" },
|
|
||||||
"machine_center_is_zero": { "default_value": false },
|
"machine_center_is_zero": { "default_value": false },
|
||||||
"machine_depth": { "default_value": 200 },
|
"machine_depth": { "default_value": 200 },
|
||||||
"machine_end_gcode": { "default_value": ";---- Ending Script Start ----\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-4 F300 ;retract the filament a bit before lifting the nozzle to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F5000 ;move Z up a bit and retract filament even more\nG28 Z0 ;move bed down\nG28 X0 Y0 ;move X/Y to min endstops so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM107 ;switch off cooling fan\nM355 S0 P0 ;switch off case light\n;---- Ending Script End ----\n" },
|
"machine_end_gcode": { "default_value": ";---- Ending Script Start ----\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-4 F300 ;retract the filament a bit before lifting the nozzle to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F5000 ;move Z up a bit and retract filament even more\nG28 Z0 ;move bed down\nG28 X0 Y0 ;move X/Y to min endstops so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM107 ;switch off cooling fan\nM355 S0 P0 ;switch off case light\n;---- Ending Script End ----\n" },
|
||||||
|
16
resources/extruders/anycubic_kobra2_extruder_0.def.json
Normal file
16
resources/extruders/anycubic_kobra2_extruder_0.def.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "anycubic_kobra2",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
BIN
resources/meshes/anycubic_kobra2_platform.stl
Normal file
BIN
resources/meshes/anycubic_kobra2_platform.stl
Normal file
Binary file not shown.
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.25mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.25
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.3mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.3
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.4mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.4
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.5mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.5
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.6mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.6
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = flyingbear_ghost_6
|
||||||
|
name = 0.8mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.8
|
||||||
|
|
13
resources/variants/multicomp/multicomp_mcpi200_0.2.inst.cfg
Normal file
13
resources/variants/multicomp/multicomp_mcpi200_0.2.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = multicomp_mcpi200
|
||||||
|
name = 0.2mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.2
|
||||||
|
|
13
resources/variants/multicomp/multicomp_mcpi200_0.4.inst.cfg
Normal file
13
resources/variants/multicomp/multicomp_mcpi200_0.4.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = multicomp_mcpi200
|
||||||
|
name = 0.4mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.4
|
||||||
|
|
13
resources/variants/multicomp/multicomp_mcpi200_0.6.inst.cfg
Normal file
13
resources/variants/multicomp/multicomp_mcpi200_0.6.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = multicomp_mcpi200
|
||||||
|
name = 0.6mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.6
|
||||||
|
|
13
resources/variants/multicomp/multicomp_mcpi200_0.8.inst.cfg
Normal file
13
resources/variants/multicomp/multicomp_mcpi200_0.8.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = multicomp_mcpi200
|
||||||
|
name = 0.8mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.8
|
||||||
|
|
13
resources/variants/multicomp/multicomp_mcpi200_1.0.inst.cfg
Normal file
13
resources/variants/multicomp/multicomp_mcpi200_1.0.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = multicomp_mcpi200
|
||||||
|
name = 1.0mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 1.0
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = renkforce_pro10plus
|
||||||
|
name = 0.2mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.2
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = renkforce_pro10plus
|
||||||
|
name = 0.4mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.4
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = renkforce_pro10plus
|
||||||
|
name = 0.6mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.6
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = renkforce_pro10plus
|
||||||
|
name = 0.8mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.8
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = renkforce_pro10plus
|
||||||
|
name = 1.0mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 22
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 1.0
|
||||||
|
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_c
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_hot
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_hot_s
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_e
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_c
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_hot
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_hot_s
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ version = 4
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
hardware_type = nozzle
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = mk14_e
|
||||||
setting_version = 22
|
setting_version = 22
|
||||||
type = variant
|
type = variant
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user