mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 00:36:25 +08:00
Merge branch 'main' into PP-476-Make-PPS-CF-a-bundled-package
This commit is contained in:
commit
b70e2aac4c
40
.github/workflows/conan-package-resources.yml
vendored
Normal file
40
.github/workflows/conan-package-resources.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
name: conan-package-resources
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- '.github/workflows/conan-package-resources.yml'
|
||||||
|
- 'resources/definitions/**'
|
||||||
|
- 'resources/extruders/**'
|
||||||
|
- 'resources/images/**'
|
||||||
|
- 'resources/intent/**'
|
||||||
|
- 'resources/meshes/**'
|
||||||
|
- 'resources/quality/**'
|
||||||
|
- 'resources/variants/**'
|
||||||
|
- 'resources/conanfile.py'
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'CURA-*'
|
||||||
|
- 'PP-*'
|
||||||
|
- 'NP-*'
|
||||||
|
- '[0-9].[0-9]*'
|
||||||
|
- '[0-9].[0-9][0-9]*'
|
||||||
|
|
||||||
|
env:
|
||||||
|
CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
|
||||||
|
CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
conan-recipe-version:
|
||||||
|
uses: ultimaker/cura-workflows/.github/workflows/conan-recipe-version.yml@main
|
||||||
|
with:
|
||||||
|
project_name: cura_resources
|
||||||
|
|
||||||
|
conan-package-export:
|
||||||
|
needs: [ conan-recipe-version ]
|
||||||
|
uses: ultimaker/cura-workflows/.github/workflows/conan-recipe-export.yml@main
|
||||||
|
with:
|
||||||
|
recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
|
||||||
|
recipe_id_latest: ${{ needs.conan-recipe-version.outputs.recipe_id_latest }}
|
||||||
|
conan_recipe_root: "./resources/"
|
||||||
|
secrets: inherit
|
13
.github/workflows/conan-package.yml
vendored
13
.github/workflows/conan-package.yml
vendored
@ -4,12 +4,20 @@ on:
|
|||||||
push:
|
push:
|
||||||
paths:
|
paths:
|
||||||
- 'plugins/**'
|
- 'plugins/**'
|
||||||
- 'resources/**'
|
|
||||||
- 'cura/**'
|
- 'cura/**'
|
||||||
|
- 'resources/bundled_packages/**'
|
||||||
|
- 'resources/i18n/**'
|
||||||
|
- 'resources/qml/**'
|
||||||
|
- 'resources/setting_visibility/**'
|
||||||
|
- 'resources/shaders/**'
|
||||||
|
- 'resources/texts/**'
|
||||||
|
- 'resources/themes/**'
|
||||||
|
- 'resources/public_key.pem'
|
||||||
|
- 'resources/README_resources.txt'
|
||||||
- 'icons/**'
|
- 'icons/**'
|
||||||
- 'tests/**'
|
- 'tests/**'
|
||||||
- 'packaging/**'
|
- 'packaging/**'
|
||||||
- '.github/workflows/conan-*.yml'
|
- '.github/workflows/conan-package.yml'
|
||||||
- '.github/workflows/notify.yml'
|
- '.github/workflows/notify.yml'
|
||||||
- '.github/workflows/requirements-runner.txt'
|
- '.github/workflows/requirements-runner.txt'
|
||||||
- 'requirements*.txt'
|
- 'requirements*.txt'
|
||||||
@ -20,6 +28,7 @@ on:
|
|||||||
- 'main'
|
- 'main'
|
||||||
- 'CURA-*'
|
- 'CURA-*'
|
||||||
- 'PP-*'
|
- 'PP-*'
|
||||||
|
- 'NP-*'
|
||||||
- '[0-9].[0-9]*'
|
- '[0-9].[0-9]*'
|
||||||
- '[0-9].[0-9][0-9]*'
|
- '[0-9].[0-9][0-9]*'
|
||||||
|
|
||||||
|
43
.github/workflows/installers.yml
vendored
43
.github/workflows/installers.yml
vendored
@ -30,6 +30,29 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cura_conan_version:
|
||||||
|
default: 'cura/latest@ultimaker/testing'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
conan_args:
|
||||||
|
default: ''
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
enterprise:
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
staging:
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
nightly:
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
|
||||||
schedule:
|
schedule:
|
||||||
# Daily at 4:15 CET (main-branch) and 5:15 CET (release-branch)
|
# Daily at 4:15 CET (main-branch) and 5:15 CET (release-branch)
|
||||||
- cron: '15 3 * * *'
|
- cron: '15 3 * * *'
|
||||||
@ -70,7 +93,7 @@ jobs:
|
|||||||
enterprise: ${{ github.event.inputs.enterprise == 'true' }}
|
enterprise: ${{ github.event.inputs.enterprise == 'true' }}
|
||||||
staging: ${{ github.event.inputs.staging == 'true' }}
|
staging: ${{ github.event.inputs.staging == 'true' }}
|
||||||
architecture: X64
|
architecture: X64
|
||||||
operating_system: ubuntu-22.04
|
operating_system: self-hosted-Ubuntu22-X64
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
macos-installer:
|
macos-installer:
|
||||||
@ -109,7 +132,7 @@ jobs:
|
|||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
- name: Download the run info
|
- name: Download the run info
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: linux-run-info
|
name: linux-run-info
|
||||||
|
|
||||||
@ -151,13 +174,13 @@ jobs:
|
|||||||
f.writelines(f"NIGHTLY_TIME={nightly_creation_time}\n")
|
f.writelines(f"NIGHTLY_TIME={nightly_creation_time}\n")
|
||||||
|
|
||||||
- name: Download linux installer jobs artifacts
|
- name: Download linux installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.LINUX }}-AppImage
|
name: ${{ steps.filename.outputs.LINUX }}-AppImage
|
||||||
path: installers
|
path: installers
|
||||||
|
|
||||||
- name: Download linux installer jobs asc artifacts
|
- name: Download linux installer jobs asc artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.LINUX }}-asc
|
name: ${{ steps.filename.outputs.LINUX }}-asc
|
||||||
path: installers
|
path: installers
|
||||||
@ -175,13 +198,13 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Download win msi installer jobs artifacts
|
- name: Download win msi installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.WIN_MSI }}-msi
|
name: ${{ steps.filename.outputs.WIN_MSI }}-msi
|
||||||
path: installers
|
path: installers
|
||||||
|
|
||||||
- name: Download win exe installer jobs artifacts
|
- name: Download win exe installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.WIN_EXE }}-exe
|
name: ${{ steps.filename.outputs.WIN_EXE }}-exe
|
||||||
path: installers
|
path: installers
|
||||||
@ -199,13 +222,13 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Download MacOS (X64) dmg installer jobs artifacts
|
- name: Download MacOS (X64) dmg installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.MAC_X64_DMG }}-dmg
|
name: ${{ steps.filename.outputs.MAC_X64_DMG }}-dmg
|
||||||
path: installers
|
path: installers
|
||||||
|
|
||||||
- name: Download MacOS (X64) pkg installer jobs artifacts
|
- name: Download MacOS (X64) pkg installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.MAC_X64_PKG }}-pkg
|
name: ${{ steps.filename.outputs.MAC_X64_PKG }}-pkg
|
||||||
path: installers
|
path: installers
|
||||||
@ -223,13 +246,13 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Download MacOS (ARM-64) dmg installer jobs artifacts
|
- name: Download MacOS (ARM-64) dmg installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.MAC_ARM_DMG }}-dmg
|
name: ${{ steps.filename.outputs.MAC_ARM_DMG }}-dmg
|
||||||
path: installers
|
path: installers
|
||||||
|
|
||||||
- name: Download MacOS (ARM-64) pkg installer jobs artifacts
|
- name: Download MacOS (ARM-64) pkg installer jobs artifacts
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.filename.outputs.MAC_ARM_PKG }}-pkg
|
name: ${{ steps.filename.outputs.MAC_ARM_PKG }}-pkg
|
||||||
path: installers
|
path: installers
|
||||||
|
5
.github/workflows/linux.yml
vendored
5
.github/workflows/linux.yml
vendored
@ -34,10 +34,11 @@ on:
|
|||||||
operating_system:
|
operating_system:
|
||||||
description: 'OS'
|
description: 'OS'
|
||||||
required: true
|
required: true
|
||||||
default: 'ubuntu-22.04'
|
default: 'self-hosted-Ubuntu22-X64'
|
||||||
type: choice
|
type: choice
|
||||||
options:
|
options:
|
||||||
- ubuntu-22.04
|
- ubuntu-22.04
|
||||||
|
- self-hosted-Ubuntu22-X64
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linux-installer:
|
linux-installer:
|
||||||
@ -49,4 +50,4 @@ jobs:
|
|||||||
staging: ${{ inputs.staging }}
|
staging: ${{ inputs.staging }}
|
||||||
architecture: ${{ inputs.architecture }}
|
architecture: ${{ inputs.architecture }}
|
||||||
operating_system: ${{ inputs.operating_system }}
|
operating_system: ${{ inputs.operating_system }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
@ -5,6 +5,9 @@ on:
|
|||||||
path:
|
path:
|
||||||
- "resources/**"
|
- "resources/**"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
printer-linter-diagnose:
|
printer-linter-diagnose:
|
||||||
name: Printer linter PR diagnose
|
name: Printer linter PR diagnose
|
||||||
@ -50,7 +53,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo ${{ github.event.number }} > printer-linter-result/pr-id.txt
|
echo ${{ github.event.number }} > printer-linter-result/pr-id.txt
|
||||||
echo ${{ github.event.pull_request.head.repo.full_name }} > printer-linter-result/pr-head-repo.txt
|
echo ${{ github.event.pull_request.head.repo.full_name }} > printer-linter-result/pr-head-repo.txt
|
||||||
echo ${{ github.event.pull_request.head.ref }} > printer-linter-result/pr-head-ref.txt
|
echo ${{ github.event.pull_request.head.sha }} > printer-linter-result/pr-head-sha.txt
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
|
120
.github/workflows/printer-linter-pr-post.yml
vendored
120
.github/workflows/printer-linter-pr-post.yml
vendored
@ -6,88 +6,106 @@ on:
|
|||||||
types: [completed]
|
types: [completed]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
clang-tidy-results:
|
printer-linter-result:
|
||||||
# Trigger the job only if the previous (insecure) workflow completed successfully
|
# Trigger the job only if the previous (insecure) workflow completed successfully
|
||||||
if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' }}
|
if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Download analysis results
|
- name: Download analysis results
|
||||||
uses: actions/github-script@v3.1.0
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
let artifacts = await github.actions.listWorkflowRunArtifacts({
|
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
run_id: ${{github.event.workflow_run.id }},
|
run_id: ${{github.event.workflow_run.id }},
|
||||||
});
|
});
|
||||||
let matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||||
return artifact.name == "printer-linter-result"
|
return artifact.name == "printer-linter-result"
|
||||||
})[0];
|
})[0];
|
||||||
let download = await github.actions.downloadArtifact({
|
const download = await github.rest.actions.downloadArtifact({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
artifact_id: matchArtifact.id,
|
artifact_id: matchArtifact.id,
|
||||||
archive_format: "zip",
|
archive_format: "zip",
|
||||||
});
|
});
|
||||||
let fs = require("fs");
|
const fs = require("fs");
|
||||||
fs.writeFileSync("${{github.workspace}}/printer-linter-result.zip", Buffer.from(download.data));
|
fs.writeFileSync("${{ github.workspace }}/printer-linter-result.zip", Buffer.from(download.data));
|
||||||
|
|
||||||
- name: Set environment variables
|
|
||||||
run: |
|
|
||||||
mkdir printer-linter-result
|
|
||||||
unzip printer-linter-result.zip -d printer-linter-result
|
|
||||||
echo "pr_id=$(cat printer-linter-result/pr-id.txt)" >> $GITHUB_ENV
|
|
||||||
echo "pr_head_repo=$(cat printer-linter-result/pr-head-repo.txt)" >> $GITHUB_ENV
|
|
||||||
echo "pr_head_ref=$(cat printer-linter-result/pr-head-ref.txt)" >> $GITHUB_ENV
|
|
||||||
if [[ -f "printer-linter-result/comment.md" ]]; then
|
|
||||||
echo "commentFileExists=true" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "commentFileExists=false" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: ${{ env.pr_head_repo }}
|
|
||||||
ref: ${{ env.pr_head_ref }}
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: Redownload analysis results
|
|
||||||
uses: actions/github-script@v3.1.0
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
let artifacts = await github.actions.listWorkflowRunArtifacts({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
run_id: ${{github.event.workflow_run.id }},
|
|
||||||
});
|
|
||||||
let matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
|
||||||
return artifact.name == "printer-linter-result"
|
|
||||||
})[0];
|
|
||||||
let download = await github.actions.downloadArtifact({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
artifact_id: matchArtifact.id,
|
|
||||||
archive_format: "zip",
|
|
||||||
});
|
|
||||||
let fs = require("fs");
|
|
||||||
fs.writeFileSync("${{github.workspace}}/printer-linter-result.zip", Buffer.from(download.data));
|
|
||||||
|
|
||||||
- name: Extract analysis results
|
- name: Extract analysis results
|
||||||
run: |
|
run: |
|
||||||
mkdir printer-linter-result
|
mkdir printer-linter-result
|
||||||
unzip printer-linter-result.zip -d printer-linter-result
|
unzip -j printer-linter-result.zip -d printer-linter-result
|
||||||
|
|
||||||
|
- name: Set PR details environment variables
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const assert = require("node:assert").strict;
|
||||||
|
const fs = require("fs");
|
||||||
|
function exportVar(varName, fileName, regEx) {
|
||||||
|
const val = fs.readFileSync("${{ github.workspace }}/printer-linter-result/" + fileName, {
|
||||||
|
encoding: "ascii"
|
||||||
|
}).trimEnd();
|
||||||
|
assert.ok(regEx.test(val), "Invalid value format for " + varName);
|
||||||
|
core.exportVariable(varName, val);
|
||||||
|
}
|
||||||
|
exportVar("PR_ID", "pr-id.txt", /^[0-9]+$/);
|
||||||
|
exportVar("PR_HEAD_REPO", "pr-head-repo.txt", /^[-./0-9A-Z_a-z]+$/);
|
||||||
|
exportVar("PR_HEAD_SHA", "pr-head-sha.txt", /^[0-9A-Fa-f]+$/);
|
||||||
|
fs.access("${{ github.workspace }}/printer-linter-result/comment.md", fs.constants.F_OK, (err) => {
|
||||||
|
if (err) {
|
||||||
|
core.exportVariable("commentFileExists", "false");
|
||||||
|
} else {
|
||||||
|
core.exportVariable("commentFileExists", "true");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ env.PR_HEAD_REPO }}
|
||||||
|
ref: ${{ env.PR_HEAD_SHA }}
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Redownload analysis results
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: ${{github.event.workflow_run.id }},
|
||||||
|
});
|
||||||
|
const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "printer-linter-result"
|
||||||
|
})[0];
|
||||||
|
const download = await github.rest.actions.downloadArtifact({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
artifact_id: matchArtifact.id,
|
||||||
|
archive_format: "zip",
|
||||||
|
});
|
||||||
|
const fs = require("fs");
|
||||||
|
fs.writeFileSync("${{ github.workspace }}/printer-linter-result.zip", Buffer.from(download.data));
|
||||||
|
|
||||||
|
- name: Extract analysis results
|
||||||
|
run: |
|
||||||
|
mkdir printer-linter-result
|
||||||
|
unzip -j printer-linter-result.zip -d printer-linter-result
|
||||||
|
|
||||||
- name: Run PR Comments
|
- name: Run PR Comments
|
||||||
if: env.commentFileExists == 'true'
|
if: env.commentFileExists == 'true'
|
||||||
uses: peter-evans/create-or-update-comment@v4
|
uses: peter-evans/create-or-update-comment@v4
|
||||||
with:
|
with:
|
||||||
issue-number: ${{ env.pr_id }}
|
issue-number: ${{ env.PR_ID }}
|
||||||
body-path: 'printer-linter-result/comment.md'
|
body-path: 'printer-linter-result/comment.md'
|
||||||
|
|
||||||
- name: Run clang-tidy-pr-comments action
|
- name: Run clang-tidy-pr-comments action
|
||||||
uses: platisd/clang-tidy-pr-comments@bc0bb7da034a8317d54e7fe1e819159002f4cc40
|
uses: platisd/clang-tidy-pr-comments@v1
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
clang_tidy_fixes: printer-linter-result/fixes.yml
|
clang_tidy_fixes: printer-linter-result/fixes.yml
|
||||||
pull_request_id: ${{ env.pr_id }}
|
pull_request_id: ${{ env.PR_ID }}
|
||||||
request_changes: true
|
request_changes: true
|
||||||
|
32
.github/workflows/release-process_feature-freeze.yml
vendored
Normal file
32
.github/workflows/release-process_feature-freeze.yml
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
name: Feature Freeze
|
||||||
|
run-name: Feature freeze Cura ${{ inputs.cura_version }} by @${{ github.actor }}
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
cura_version:
|
||||||
|
description: 'Cura version major and minor, e.g. 5.7'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
parse-version:
|
||||||
|
name: Parse input version string
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
package_version: ${{ steps.version_parser.outputs.major }}.${{ steps.version_parser.outputs.minor }}.0-alpha.1
|
||||||
|
steps:
|
||||||
|
- name: Parse version string
|
||||||
|
id: version_parser
|
||||||
|
uses: booxmedialtd/ws-action-parse-semver@v1.4.7
|
||||||
|
with:
|
||||||
|
input_string: ${{ inputs.cura_version }}.0
|
||||||
|
|
||||||
|
feature-freeze:
|
||||||
|
name: Process feature freeze
|
||||||
|
uses: Ultimaker/Cura-workflows/.github/workflows/cura-set-packages-versions.yml@main
|
||||||
|
needs: [parse-version]
|
||||||
|
with:
|
||||||
|
cura_version: ${{ needs.parse-version.outputs.package_version }}
|
||||||
|
create_feature_branch: true
|
||||||
|
secrets: inherit
|
179
.github/workflows/release-process_release-candidate.yml
vendored
Normal file
179
.github/workflows/release-process_release-candidate.yml
vendored
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
name: Prepare Release Candidate
|
||||||
|
run-name: Release Candidate for Cura ${{ inputs.cura_version }} by @${{ github.actor }}
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
cura_version:
|
||||||
|
description: 'Cura version number, e.g. 5.7.0, 5.7.2 or 5.8.0-beta.2'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
parse-version:
|
||||||
|
name: Parse input version string
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
version_major: ${{ steps.version_parser.outputs.major }}
|
||||||
|
version_minor: ${{ steps.version_parser.outputs.minor }}
|
||||||
|
version_patch: ${{ steps.version_parser.outputs.patch }}
|
||||||
|
branch_name: ${{ steps.version_parser.outputs.major }}.${{ steps.version_parser.outputs.minor }}
|
||||||
|
steps:
|
||||||
|
- name: Parse version string
|
||||||
|
id: version_parser
|
||||||
|
uses: booxmedialtd/ws-action-parse-semver@v1.4.7
|
||||||
|
with:
|
||||||
|
input_string: ${{ inputs.cura_version }}
|
||||||
|
|
||||||
|
freeze-packages-versions:
|
||||||
|
name: Freeze packges versions
|
||||||
|
uses: Ultimaker/Cura-workflows/.github/workflows/cura-set-packages-versions.yml@main
|
||||||
|
needs: [parse-version]
|
||||||
|
with:
|
||||||
|
cura_version: ${{ inputs.cura_version }}
|
||||||
|
create_feature_branch: false
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
find-rc-tag:
|
||||||
|
name: Find RC tag name
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [freeze-packages-versions]
|
||||||
|
outputs:
|
||||||
|
tag_name: ${{ steps.find-available-tag-name.outputs.tag_name }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-tags: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Find available tag name
|
||||||
|
id: find-available-tag-name
|
||||||
|
run: |
|
||||||
|
VERSION=${{ inputs.cura_version }}
|
||||||
|
|
||||||
|
RC_INDEX=0
|
||||||
|
while
|
||||||
|
RC_INDEX=$((RC_INDEX+1))
|
||||||
|
TAG_NAME="$VERSION-RC$RC_INDEX"
|
||||||
|
[[ $(git tag -l "$TAG_NAME") ]]
|
||||||
|
do true; done
|
||||||
|
|
||||||
|
echo "tag_name=$TAG_NAME" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
create-tags:
|
||||||
|
name: Create tags
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [parse-version, find-rc-tag]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repository: [Cura, Uranium, CuraEngine, cura-binary-data, fdm_materials]
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: Ultimaker/${{ matrix.repository }}
|
||||||
|
ref: ${{ needs.parse-version.outputs.branch_name }}
|
||||||
|
token: ${{ secrets.CURA_AUTORELEASE_PAT }}
|
||||||
|
|
||||||
|
- name: Create tag
|
||||||
|
run: |
|
||||||
|
git tag ${{ needs.find-rc-tag.outputs.tag_name }}
|
||||||
|
git push origin tag ${{ needs.find-rc-tag.outputs.tag_name }}
|
||||||
|
|
||||||
|
create-dependencies-packages:
|
||||||
|
name: Create conan packages for dependencies
|
||||||
|
uses: ultimaker/cura-workflows/.github/workflows/conan-package-release.yml@main
|
||||||
|
needs: [parse-version, freeze-packages-versions]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repository: [Cura, Uranium, CuraEngine, cura-binary-data, fdm_materials]
|
||||||
|
include:
|
||||||
|
- conan_recipe_root: "."
|
||||||
|
- repository: Cura
|
||||||
|
conan_recipe_root: "resources"
|
||||||
|
with:
|
||||||
|
repository: ${{ matrix.repository }}
|
||||||
|
ref_name: ${{ needs.parse-version.outputs.branch_name }}
|
||||||
|
version: ${{ inputs.cura_version }}
|
||||||
|
conan_release: true
|
||||||
|
conan_user_channel: ultimaker/stable
|
||||||
|
conan_internal: false
|
||||||
|
conan_latest: true
|
||||||
|
conan_recipe_root: ${{ matrix.conan_recipe_root }}
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
create-cura-package:
|
||||||
|
name: Create conan package for Cura
|
||||||
|
uses: ultimaker/cura-workflows/.github/workflows/conan-package-release.yml@main
|
||||||
|
needs: [parse-version, create-dependencies-packages]
|
||||||
|
with:
|
||||||
|
repository: Cura
|
||||||
|
ref_name: ${{ needs.parse-version.outputs.branch_name }}
|
||||||
|
version: ${{ inputs.cura_version }}
|
||||||
|
conan_release: true
|
||||||
|
conan_user_channel: ultimaker/stable
|
||||||
|
conan_internal: false
|
||||||
|
conan_latest: true
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
create-installers:
|
||||||
|
name: Create installers
|
||||||
|
uses: ./.github/workflows/installers.yml
|
||||||
|
needs: [parse-version, create-cura-package]
|
||||||
|
with:
|
||||||
|
cura_conan_version: cura/${{ inputs.cura_version }}@/
|
||||||
|
enterprise: false
|
||||||
|
staging: false
|
||||||
|
nightly: false
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
create-release-draft:
|
||||||
|
name: Create the release draft
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [create-installers, parse-version]
|
||||||
|
steps:
|
||||||
|
- name: Checkout Cura repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ needs.parse-version.outputs.branch_name }}
|
||||||
|
|
||||||
|
- name: Extract changelog
|
||||||
|
run: python ./scripts/extract_changelog.py --version ${{ needs.parse-version.outputs.version_major }}.${{ needs.parse-version.outputs.version_minor }}.${{ needs.parse-version.outputs.version_patch }} --changelog ./resources/texts/change_log.txt > formatted_changelog.txt
|
||||||
|
|
||||||
|
- name: Get commit id for release
|
||||||
|
id: get-commit-id
|
||||||
|
uses: iawia002/get-tag-or-commit-id@v1.0.1
|
||||||
|
with:
|
||||||
|
length: 40
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
|
uses: notpeelz/action-gh-create-release@v5.0.1
|
||||||
|
with:
|
||||||
|
target: ${{ steps.get-commit-id.outputs.id }}
|
||||||
|
tag: ${{ inputs.cura_version }}
|
||||||
|
strategy: replace
|
||||||
|
title: UltiMaker Cura ${{ inputs.cura_version }}
|
||||||
|
draft: true
|
||||||
|
body-source: file
|
||||||
|
body: formatted_changelog.txt
|
||||||
|
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v4.1.7
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
merge-multiple: true
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
working-directory: artifacts
|
||||||
|
run: |
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-linux-X64.AppImage --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-linux-X64.AppImage.asc --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-macos-ARM64.dmg --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-macos-ARM64.pkg --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-macos-X64.dmg --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-macos-X64.pkg --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-win64-X64.exe --clobber
|
||||||
|
gh release upload ${{ inputs.cura_version }} UltiMaker-Cura-${{ inputs.cura_version }}-win64-X64.msi --clobber
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
2
.github/workflows/windows.yml
vendored
2
.github/workflows/windows.yml
vendored
@ -50,4 +50,4 @@ jobs:
|
|||||||
staging: ${{ inputs.staging }}
|
staging: ${{ inputs.staging }}
|
||||||
architecture: ${{ inputs.architecture }}
|
architecture: ${{ inputs.architecture }}
|
||||||
operating_system: ${{ inputs.operating_system }}
|
operating_system: ${{ inputs.operating_system }}
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
@ -2,6 +2,7 @@ checks:
|
|||||||
diagnostic-mesh-file-extension: true
|
diagnostic-mesh-file-extension: true
|
||||||
diagnostic-mesh-file-size: true
|
diagnostic-mesh-file-size: true
|
||||||
diagnostic-definition-redundant-override: true
|
diagnostic-definition-redundant-override: true
|
||||||
|
diagnostic-definition-experimental-setting: true
|
||||||
diagnostic-resources-macos-app-directory-name: true
|
diagnostic-resources-macos-app-directory-name: true
|
||||||
diagnostic-incorrect-formula: true
|
diagnostic-incorrect-formula: true
|
||||||
diagnostic-resource-file-deleted: true
|
diagnostic-resource-file-deleted: true
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
version: "5.8.0-alpha.0"
|
version: "5.8.0-alpha.0"
|
||||||
requirements:
|
requirements:
|
||||||
|
- "cura_resources/(latest)@ultimaker/testing"
|
||||||
- "uranium/(latest)@ultimaker/testing"
|
- "uranium/(latest)@ultimaker/testing"
|
||||||
- "curaengine/(latest)@ultimaker/testing"
|
- "curaengine/(latest)@ultimaker/testing"
|
||||||
- "cura_binary_data/(latest)@ultimaker/testing"
|
- "cura_binary_data/(latest)@ultimaker/testing"
|
||||||
@ -54,6 +55,10 @@ pyinstaller:
|
|||||||
package: "cura"
|
package: "cura"
|
||||||
src: "resources"
|
src: "resources"
|
||||||
dst: "share/cura/resources"
|
dst: "share/cura/resources"
|
||||||
|
cura_shared_resources:
|
||||||
|
package: "cura_resources"
|
||||||
|
src: "res"
|
||||||
|
dst: "share/cura/resources"
|
||||||
cura_private_data:
|
cura_private_data:
|
||||||
package: "cura_private_data"
|
package: "cura_private_data"
|
||||||
src: "res"
|
src: "res"
|
||||||
|
12
conanfile.py
12
conanfile.py
@ -468,6 +468,12 @@ class CuraConan(ConanFile):
|
|||||||
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[0]), str(self._share_dir.joinpath("cura", "resources")), keep_path = True)
|
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[0]), str(self._share_dir.joinpath("cura", "resources")), keep_path = True)
|
||||||
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[1]), str(self._share_dir.joinpath("cura", "plugins")), keep_path = True)
|
copy(self, "*", os.path.join(self.package_folder, self.cpp_info.resdirs[1]), str(self._share_dir.joinpath("cura", "plugins")), keep_path = True)
|
||||||
|
|
||||||
|
# Copy the cura_resources resources from the package
|
||||||
|
rm(self, "conanfile.py", os.path.join(self.package_folder, self.cpp.package.resdirs[0]))
|
||||||
|
cura_resources = self.dependencies["cura_resources"].cpp_info
|
||||||
|
for res_dir in cura_resources.resdirs:
|
||||||
|
copy(self, "*", res_dir, str(self._share_dir.joinpath("cura", "resources", Path(res_dir).name)), keep_path = True)
|
||||||
|
|
||||||
# Copy resources of Uranium (keep folder structure)
|
# Copy resources of Uranium (keep folder structure)
|
||||||
uranium = self.dependencies["uranium"].cpp_info
|
uranium = self.dependencies["uranium"].cpp_info
|
||||||
copy(self, "*", uranium.resdirs[0], str(self._share_dir.joinpath("uranium", "resources")), keep_path = True)
|
copy(self, "*", uranium.resdirs[0], str(self._share_dir.joinpath("uranium", "resources")), keep_path = True)
|
||||||
@ -519,6 +525,12 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
|
|||||||
# Remove the fdm_materials from the package
|
# Remove the fdm_materials from the package
|
||||||
rmdir(self, os.path.join(self.package_folder, self.cpp.package.resdirs[0], "materials"))
|
rmdir(self, os.path.join(self.package_folder, self.cpp.package.resdirs[0], "materials"))
|
||||||
|
|
||||||
|
# Remove the cura_resources resources from the package
|
||||||
|
rm(self, "conanfile.py", os.path.join(self.package_folder, self.cpp.package.resdirs[0]))
|
||||||
|
cura_resources = self.dependencies["cura_resources"].cpp_info
|
||||||
|
for res_dir in cura_resources.resdirs:
|
||||||
|
rmdir(self, os.path.join(self.package_folder, self.cpp.package.resdirs[0], Path(res_dir).name))
|
||||||
|
|
||||||
def package_info(self):
|
def package_info(self):
|
||||||
self.user_info.pip_requirements = "requirements.txt"
|
self.user_info.pip_requirements = "requirements.txt"
|
||||||
self.user_info.pip_requirements_git = "requirements-ultimaker.txt"
|
self.user_info.pip_requirements_git = "requirements-ultimaker.txt"
|
||||||
|
@ -115,15 +115,15 @@ class Account(QObject):
|
|||||||
self._update_timer.setSingleShot(True)
|
self._update_timer.setSingleShot(True)
|
||||||
self._update_timer.timeout.connect(self.sync)
|
self._update_timer.timeout.connect(self.sync)
|
||||||
|
|
||||||
self._sync_services: Dict[str, int] = {}
|
|
||||||
"""contains entries "service_name" : SyncState"""
|
"""contains entries "service_name" : SyncState"""
|
||||||
self.syncRequested.connect(self._updatePermissions)
|
self._sync_services: Dict[str, int] = {}
|
||||||
|
|
||||||
def initialize(self) -> None:
|
def initialize(self) -> None:
|
||||||
self._authorization_service.initialize(self._application.getPreferences())
|
self._authorization_service.initialize(self._application.getPreferences())
|
||||||
self._authorization_service.onAuthStateChanged.connect(self._onLoginStateChanged)
|
self._authorization_service.onAuthStateChanged.connect(self._onLoginStateChanged)
|
||||||
self._authorization_service.onAuthenticationError.connect(self._onLoginStateChanged)
|
self._authorization_service.onAuthenticationError.connect(self._onLoginStateChanged)
|
||||||
self._authorization_service.accessTokenChanged.connect(self._onAccessTokenChanged)
|
self._authorization_service.accessTokenChanged.connect(self._onAccessTokenChanged)
|
||||||
|
self._authorization_service.accessTokenChanged.connect(self._updatePermissions)
|
||||||
self._authorization_service.loadAuthDataFromPreferences()
|
self._authorization_service.loadAuthDataFromPreferences()
|
||||||
|
|
||||||
@pyqtProperty(int, notify=syncStateChanged)
|
@pyqtProperty(int, notify=syncStateChanged)
|
||||||
|
@ -422,7 +422,8 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice):
|
|||||||
_PRINTER_TYPE_NAME = {
|
_PRINTER_TYPE_NAME = {
|
||||||
"fire_e": "ultimaker_method",
|
"fire_e": "ultimaker_method",
|
||||||
"lava_f": "ultimaker_methodx",
|
"lava_f": "ultimaker_methodx",
|
||||||
"magma_10": "ultimaker_methodxl"
|
"magma_10": "ultimaker_methodxl",
|
||||||
|
"sketch": "ultimaker_sketch"
|
||||||
}
|
}
|
||||||
if printer_type in _PRINTER_TYPE_NAME:
|
if printer_type in _PRINTER_TYPE_NAME:
|
||||||
return _PRINTER_TYPE_NAME[printer_type]
|
return _PRINTER_TYPE_NAME[printer_type]
|
||||||
|
@ -96,7 +96,8 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def _convertUMNodeToSavitarNode(um_node,
|
def _convertUMNodeToSavitarNode(um_node,
|
||||||
transformation = Matrix(),
|
transformation = Matrix(),
|
||||||
exported_settings: Optional[Dict[str, Set[str]]] = None):
|
exported_settings: Optional[Dict[str, Set[str]]] = None,
|
||||||
|
center_mesh = False):
|
||||||
"""Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode
|
"""Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode
|
||||||
|
|
||||||
:returns: Uranium Scene node.
|
:returns: Uranium Scene node.
|
||||||
@ -111,16 +112,20 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
savitar_node = Savitar.SceneNode()
|
savitar_node = Savitar.SceneNode()
|
||||||
savitar_node.setName(um_node.getName())
|
savitar_node.setName(um_node.getName())
|
||||||
|
|
||||||
node_matrix = Matrix()
|
|
||||||
mesh_data = um_node.getMeshData()
|
mesh_data = um_node.getMeshData()
|
||||||
# compensate for original center position, if object(s) is/are not around its zero position
|
|
||||||
if mesh_data is not None:
|
if center_mesh:
|
||||||
extents = mesh_data.getExtents()
|
node_matrix = Matrix()
|
||||||
if extents is not None:
|
# compensate for original center position, if object(s) is/are not around its zero position
|
||||||
# We use a different coordinate space while writing, so flip Z and Y
|
if mesh_data is not None:
|
||||||
center_vector = Vector(extents.center.x, extents.center.z, extents.center.y)
|
extents = mesh_data.getExtents()
|
||||||
node_matrix.setByTranslation(center_vector)
|
if extents is not None:
|
||||||
node_matrix.multiply(um_node.getLocalTransformation())
|
# We use a different coordinate space while writing, so flip Z and Y
|
||||||
|
center_vector = Vector(extents.center.x, extents.center.y, extents.center.z)
|
||||||
|
node_matrix.setByTranslation(center_vector)
|
||||||
|
node_matrix.multiply(um_node.getLocalTransformation())
|
||||||
|
else:
|
||||||
|
node_matrix = um_node.getLocalTransformation()
|
||||||
|
|
||||||
matrix_string = ThreeMFWriter._convertMatrixToString(node_matrix.preMultiply(transformation))
|
matrix_string = ThreeMFWriter._convertMatrixToString(node_matrix.preMultiply(transformation))
|
||||||
|
|
||||||
@ -147,7 +152,7 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
for key in changed_setting_keys:
|
for key in changed_setting_keys:
|
||||||
savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value")))
|
savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value")))
|
||||||
else:
|
else:
|
||||||
# We want to export only the specified settings
|
# We want to export only the specified settings
|
||||||
if um_node.getName() in exported_settings:
|
if um_node.getName() in exported_settings:
|
||||||
model_exported_settings = exported_settings[um_node.getName()]
|
model_exported_settings = exported_settings[um_node.getName()]
|
||||||
|
|
||||||
@ -283,7 +288,8 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
for root_child in node.getChildren():
|
for root_child in node.getChildren():
|
||||||
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child,
|
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child,
|
||||||
transformation_matrix,
|
transformation_matrix,
|
||||||
exported_model_settings)
|
exported_model_settings,
|
||||||
|
center_mesh = True)
|
||||||
if savitar_node:
|
if savitar_node:
|
||||||
savitar_scene.addSceneNode(savitar_node)
|
savitar_scene.addSceneNode(savitar_node)
|
||||||
else:
|
else:
|
||||||
@ -442,7 +448,7 @@ class ThreeMFWriter(MeshWriter):
|
|||||||
def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
|
def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
|
||||||
savitar_scene = Savitar.Scene()
|
savitar_scene = Savitar.Scene()
|
||||||
for scene_node in scene_nodes:
|
for scene_node in scene_nodes:
|
||||||
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node)
|
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(scene_node, center_mesh = True)
|
||||||
savitar_scene.addSceneNode(savitar_node)
|
savitar_scene.addSceneNode(savitar_node)
|
||||||
parser = Savitar.ThreeMFParser()
|
parser = Savitar.ThreeMFParser()
|
||||||
scene_string = parser.sceneToString(savitar_scene)
|
scene_string = parser.sceneToString(savitar_scene)
|
||||||
|
@ -544,7 +544,7 @@ class CuraEngineBackend(QObject, Backend):
|
|||||||
|
|
||||||
if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder:
|
if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder:
|
||||||
self._error_message = Message(catalog.i18nc("@info:status",
|
self._error_message = Message(catalog.i18nc("@info:status",
|
||||||
"Unable to slice because there are objects associated with disabled Extruder %s.") % job.getMessage(),
|
"Unable to slice because there are objects associated with disabled Extruder %s.") % job.getAssociatedDisabledExtruders(),
|
||||||
title = catalog.i18nc("@info:title", "Unable to slice"),
|
title = catalog.i18nc("@info:title", "Unable to slice"),
|
||||||
message_type = Message.MessageType.WARNING)
|
message_type = Message.MessageType.WARNING)
|
||||||
self._error_message.show()
|
self._error_message.show()
|
||||||
|
@ -146,6 +146,7 @@ class StartSliceJob(Job):
|
|||||||
self._slice_message: Arcus.PythonMessage = slice_message
|
self._slice_message: Arcus.PythonMessage = slice_message
|
||||||
self._is_cancelled: bool = False
|
self._is_cancelled: bool = False
|
||||||
self._build_plate_number: Optional[int] = None
|
self._build_plate_number: Optional[int] = None
|
||||||
|
self._associated_disabled_extruders: Optional[str] = None
|
||||||
|
|
||||||
# cache for all setting values from all stacks (global & extruder) for the current machine
|
# cache for all setting values from all stacks (global & extruder) for the current machine
|
||||||
self._all_extruders_settings: Optional[Dict[str, Any]] = None
|
self._all_extruders_settings: Optional[Dict[str, Any]] = None
|
||||||
@ -153,6 +154,9 @@ class StartSliceJob(Job):
|
|||||||
def getSliceMessage(self) -> Arcus.PythonMessage:
|
def getSliceMessage(self) -> Arcus.PythonMessage:
|
||||||
return self._slice_message
|
return self._slice_message
|
||||||
|
|
||||||
|
def getAssociatedDisabledExtruders(self) -> Optional[str]:
|
||||||
|
return self._associated_disabled_extruders
|
||||||
|
|
||||||
def setBuildPlate(self, build_plate_number: int) -> None:
|
def setBuildPlate(self, build_plate_number: int) -> None:
|
||||||
self._build_plate_number = build_plate_number
|
self._build_plate_number = build_plate_number
|
||||||
|
|
||||||
@ -334,7 +338,7 @@ class StartSliceJob(Job):
|
|||||||
if has_model_with_disabled_extruders:
|
if has_model_with_disabled_extruders:
|
||||||
self.setResult(StartJobResult.ObjectsWithDisabledExtruder)
|
self.setResult(StartJobResult.ObjectsWithDisabledExtruder)
|
||||||
associated_disabled_extruders = {p + 1 for p in associated_disabled_extruders}
|
associated_disabled_extruders = {p + 1 for p in associated_disabled_extruders}
|
||||||
self.setMessage(", ".join(map(str, sorted(associated_disabled_extruders))))
|
self._associated_disabled_extruders = ", ".join(map(str, sorted(associated_disabled_extruders)))
|
||||||
return
|
return
|
||||||
|
|
||||||
# There are cases when there is nothing to slice. This can happen due to one at a time slicing not being
|
# There are cases when there is nothing to slice. This can happen due to one at a time slicing not being
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
# Copyright (c) 2023 UltiMaker
|
# Copyright (c) 2023 UltiMaker
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from io import StringIO, BufferedIOBase
|
from io import StringIO, BufferedIOBase
|
||||||
import json
|
import json
|
||||||
from typing import cast, List, Optional, Dict
|
from typing import cast, List, Optional, Dict, Tuple
|
||||||
from zipfile import BadZipFile, ZipFile, ZIP_DEFLATED
|
from zipfile import BadZipFile, ZipFile, ZIP_DEFLATED
|
||||||
import pyDulcificum as du
|
import pyDulcificum as du
|
||||||
|
|
||||||
@ -39,16 +38,27 @@ class MakerbotWriter(MeshWriter):
|
|||||||
suffixes=["makerbot"]
|
suffixes=["makerbot"]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
MimeTypeDatabase.addMimeType(
|
||||||
|
MimeType(
|
||||||
|
name="application/x-makerbot-sketch",
|
||||||
|
comment="Makerbot Toolpath Package",
|
||||||
|
suffixes=["makerbot"]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
_PNG_FORMATS = [
|
_PNG_FORMAT = [
|
||||||
{"prefix": "isometric_thumbnail", "width": 120, "height": 120},
|
{"prefix": "isometric_thumbnail", "width": 120, "height": 120},
|
||||||
{"prefix": "isometric_thumbnail", "width": 320, "height": 320},
|
{"prefix": "isometric_thumbnail", "width": 320, "height": 320},
|
||||||
{"prefix": "isometric_thumbnail", "width": 640, "height": 640},
|
{"prefix": "isometric_thumbnail", "width": 640, "height": 640},
|
||||||
|
{"prefix": "thumbnail", "width": 90, "height": 90},
|
||||||
|
]
|
||||||
|
|
||||||
|
_PNG_FORMAT_METHOD = [
|
||||||
{"prefix": "thumbnail", "width": 140, "height": 106},
|
{"prefix": "thumbnail", "width": 140, "height": 106},
|
||||||
{"prefix": "thumbnail", "width": 212, "height": 300},
|
{"prefix": "thumbnail", "width": 212, "height": 300},
|
||||||
{"prefix": "thumbnail", "width": 960, "height": 1460},
|
{"prefix": "thumbnail", "width": 960, "height": 1460},
|
||||||
{"prefix": "thumbnail", "width": 90, "height": 90},
|
|
||||||
]
|
]
|
||||||
|
|
||||||
_META_VERSION = "3.0.0"
|
_META_VERSION = "3.0.0"
|
||||||
|
|
||||||
# must be called from the main thread because of OpenGL
|
# must be called from the main thread because of OpenGL
|
||||||
@ -74,6 +84,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def write(self, stream: BufferedIOBase, nodes: List[SceneNode], mode=MeshWriter.OutputMode.BinaryMode) -> bool:
|
def write(self, stream: BufferedIOBase, nodes: List[SceneNode], mode=MeshWriter.OutputMode.BinaryMode) -> bool:
|
||||||
|
metadata, file_format = self._getMeta(nodes)
|
||||||
if mode != MeshWriter.OutputMode.BinaryMode:
|
if mode != MeshWriter.OutputMode.BinaryMode:
|
||||||
Logger.log("e", "MakerbotWriter does not support text mode.")
|
Logger.log("e", "MakerbotWriter does not support text mode.")
|
||||||
self.setInformation(catalog.i18nc("@error:not supported", "MakerbotWriter does not support text mode."))
|
self.setInformation(catalog.i18nc("@error:not supported", "MakerbotWriter does not support text mode."))
|
||||||
@ -92,14 +103,20 @@ class MakerbotWriter(MeshWriter):
|
|||||||
|
|
||||||
gcode_text_io = StringIO()
|
gcode_text_io = StringIO()
|
||||||
success = gcode_writer.write(gcode_text_io, None)
|
success = gcode_writer.write(gcode_text_io, None)
|
||||||
|
filename, filedata = "", ""
|
||||||
# Writing the g-code failed. Then I can also not write the gzipped g-code.
|
# Writing the g-code failed. Then I can also not write the gzipped g-code.
|
||||||
if not success:
|
if not success:
|
||||||
self.setInformation(gcode_writer.getInformation())
|
self.setInformation(gcode_writer.getInformation())
|
||||||
return False
|
return False
|
||||||
|
match file_format:
|
||||||
json_toolpaths = du.gcode_2_miracle_jtp(gcode_text_io.getvalue())
|
case "application/x-makerbot-sketch":
|
||||||
metadata = self._getMeta(nodes)
|
filename, filedata = "print.gcode", gcode_text_io.getvalue()
|
||||||
|
self._PNG_FORMATS = self._PNG_FORMAT
|
||||||
|
case "application/x-makerbot":
|
||||||
|
filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue())
|
||||||
|
self._PNG_FORMATS = self._PNG_FORMAT + self._PNG_FORMAT_METHOD
|
||||||
|
case _:
|
||||||
|
raise Exception("Unsupported Mime type")
|
||||||
|
|
||||||
png_files = []
|
png_files = []
|
||||||
for png_format in self._PNG_FORMATS:
|
for png_format in self._PNG_FORMATS:
|
||||||
@ -116,7 +133,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
try:
|
try:
|
||||||
with ZipFile(stream, "w", compression=ZIP_DEFLATED) as zip_stream:
|
with ZipFile(stream, "w", compression=ZIP_DEFLATED) as zip_stream:
|
||||||
zip_stream.writestr("meta.json", json.dumps(metadata, indent=4))
|
zip_stream.writestr("meta.json", json.dumps(metadata, indent=4))
|
||||||
zip_stream.writestr("print.jsontoolpath", json_toolpaths)
|
zip_stream.writestr(filename, filedata)
|
||||||
for png_file in png_files:
|
for png_file in png_files:
|
||||||
file, data = png_file["file"], png_file["data"]
|
file, data = png_file["file"], png_file["data"]
|
||||||
zip_stream.writestr(file, data)
|
zip_stream.writestr(file, data)
|
||||||
@ -127,7 +144,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _getMeta(self, root_nodes: List[SceneNode]) -> Dict[str, any]:
|
def _getMeta(self, root_nodes: List[SceneNode]) -> Tuple[Dict[str, any], str]:
|
||||||
application = CuraApplication.getInstance()
|
application = CuraApplication.getInstance()
|
||||||
machine_manager = application.getMachineManager()
|
machine_manager = application.getMachineManager()
|
||||||
global_stack = machine_manager.activeMachine
|
global_stack = machine_manager.activeMachine
|
||||||
@ -143,7 +160,9 @@ class MakerbotWriter(MeshWriter):
|
|||||||
nodes.append(node)
|
nodes.append(node)
|
||||||
|
|
||||||
meta = dict()
|
meta = dict()
|
||||||
|
# This is a bit of a "hack", the mime type should be passed through with the export writer but
|
||||||
|
# since this is not the case we get the mime type from the global stack instead
|
||||||
|
file_format = global_stack.definition.getMetaDataEntry("file_formats")
|
||||||
meta["bot_type"] = global_stack.definition.getMetaDataEntry("reference_machine_id")
|
meta["bot_type"] = global_stack.definition.getMetaDataEntry("reference_machine_id")
|
||||||
|
|
||||||
bounds: Optional[AxisAlignedBox] = None
|
bounds: Optional[AxisAlignedBox] = None
|
||||||
@ -155,7 +174,8 @@ class MakerbotWriter(MeshWriter):
|
|||||||
bounds = node_bounds
|
bounds = node_bounds
|
||||||
else:
|
else:
|
||||||
bounds = bounds + node_bounds
|
bounds = bounds + node_bounds
|
||||||
|
if file_format == "application/x-makerbot-sketch":
|
||||||
|
bounds = None
|
||||||
if bounds is not None:
|
if bounds is not None:
|
||||||
meta["bounding_box"] = {
|
meta["bounding_box"] = {
|
||||||
"x_min": bounds.left,
|
"x_min": bounds.left,
|
||||||
@ -196,7 +216,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
meta["extruder_temperature"] = materials_temps[0]
|
meta["extruder_temperature"] = materials_temps[0]
|
||||||
meta["extruder_temperatures"] = materials_temps
|
meta["extruder_temperatures"] = materials_temps
|
||||||
|
|
||||||
meta["model_counts"] = [{"count": 1, "name": node.getName()} for node in nodes]
|
meta["model_counts"] = [{"count": len(nodes), "name": "instance0"}]
|
||||||
|
|
||||||
tool_types = [extruder.variant.getMetaDataEntry("reference_extruder_id") for extruder in extruders]
|
tool_types = [extruder.variant.getMetaDataEntry("reference_extruder_id") for extruder in extruders]
|
||||||
meta["tool_type"] = tool_types[0]
|
meta["tool_type"] = tool_types[0]
|
||||||
@ -205,12 +225,11 @@ class MakerbotWriter(MeshWriter):
|
|||||||
meta["version"] = MakerbotWriter._META_VERSION
|
meta["version"] = MakerbotWriter._META_VERSION
|
||||||
|
|
||||||
meta["preferences"] = dict()
|
meta["preferences"] = dict()
|
||||||
for node in nodes:
|
bounds = application.getBuildVolume().getBoundingBox()
|
||||||
bounds = node.getBoundingBox()
|
meta["preferences"]["instance0"] = {
|
||||||
meta["preferences"][str(node.getName())] = {
|
"machineBounds": [bounds.right, bounds.back, bounds.left, bounds.front] if bounds is not None else None,
|
||||||
"machineBounds": [bounds.right, bounds.back, bounds.left, bounds.front] if bounds is not None else None,
|
"printMode": CuraApplication.getInstance().getIntentManager().currentIntentCategory,
|
||||||
"printMode": CuraApplication.getInstance().getIntentManager().currentIntentCategory,
|
}
|
||||||
}
|
|
||||||
|
|
||||||
meta["miracle_config"] = {"gaggles": {str(node.getName()): {} for node in nodes}}
|
meta["miracle_config"] = {"gaggles": {str(node.getName()): {} for node in nodes}}
|
||||||
|
|
||||||
@ -245,7 +264,7 @@ class MakerbotWriter(MeshWriter):
|
|||||||
# platform_temperature
|
# platform_temperature
|
||||||
# total_commands
|
# total_commands
|
||||||
|
|
||||||
return meta
|
return meta, file_format
|
||||||
|
|
||||||
|
|
||||||
def meterToMillimeter(value: float) -> float:
|
def meterToMillimeter(value: float) -> float:
|
||||||
|
@ -11,14 +11,23 @@ catalog = i18nCatalog("cura")
|
|||||||
def getMetaData():
|
def getMetaData():
|
||||||
file_extension = "makerbot"
|
file_extension = "makerbot"
|
||||||
return {
|
return {
|
||||||
"mesh_writer": {
|
"mesh_writer":
|
||||||
"output": [{
|
{
|
||||||
"extension": file_extension,
|
"output": [
|
||||||
"description": catalog.i18nc("@item:inlistbox", "Makerbot Printfile"),
|
{
|
||||||
"mime_type": "application/x-makerbot",
|
"extension": file_extension,
|
||||||
"mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode,
|
"description": catalog.i18nc("@item:inlistbox", "Makerbot Printfile"),
|
||||||
}],
|
"mime_type": "application/x-makerbot",
|
||||||
}
|
"mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"extension": file_extension,
|
||||||
|
"description": catalog.i18nc("@item:inlistbox", "Makerbot Sketch Printfile"),
|
||||||
|
"mime_type": "application/x-makerbot-sketch",
|
||||||
|
"mode": MakerbotWriter.MakerbotWriter.OutputMode.BinaryMode,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -356,7 +356,10 @@ geometry41core =
|
|||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((u_show_starts == 1) && (v_prev_line_type[0] != 1) && (v_line_type[0] == 1)) {
|
if ((u_show_starts == 1) && (
|
||||||
|
((v_prev_line_type[0] != 1) && (v_line_type[0] == 1)) ||
|
||||||
|
((v_prev_line_type[0] != 4) && (v_line_type[0] == 4))
|
||||||
|
)) {
|
||||||
float w = size_x;
|
float w = size_x;
|
||||||
float h = size_y;
|
float h = size_y;
|
||||||
|
|
||||||
|
BIN
plugins/UM3NetworkPrinting/resources/png/MakerBot Sketch.png
Normal file
BIN
plugins/UM3NetworkPrinting/resources/png/MakerBot Sketch.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 185 KiB |
@ -331,7 +331,7 @@ class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
[printer, *_] = self._printers
|
[printer, *_] = self._printers
|
||||||
return printer.type in ("MakerBot Method X", "MakerBot Method XL")
|
return printer.type in ("MakerBot Method X", "MakerBot Method XL", "MakerBot Sketch")
|
||||||
|
|
||||||
@pyqtProperty(bool, notify=_cloudClusterPrintersChanged)
|
@pyqtProperty(bool, notify=_cloudClusterPrintersChanged)
|
||||||
def supportsPrintJobActions(self) -> bool:
|
def supportsPrintJobActions(self) -> bool:
|
||||||
|
@ -2,5 +2,6 @@
|
|||||||
"ultimaker_method": "MakerBot Method",
|
"ultimaker_method": "MakerBot Method",
|
||||||
"ultimaker_methodx": "MakerBot Method X",
|
"ultimaker_methodx": "MakerBot Method X",
|
||||||
"ultimaker_methodxl": "MakerBot Method XL",
|
"ultimaker_methodxl": "MakerBot Method XL",
|
||||||
"ultimaker_factor4": "Ultimaker Factor 4"
|
"ultimaker_factor4": "Ultimaker Factor 4",
|
||||||
|
"ultimaker_sketch": "MakerBot Sketch"
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,10 @@ def getLinter(file: Path, settings: dict) -> Optional[List[Linter]]:
|
|||||||
if not file.exists():
|
if not file.exists():
|
||||||
return [Directory(file, settings)]
|
return [Directory(file, settings)]
|
||||||
|
|
||||||
if ".inst" in file.suffixes and ".cfg" in file.suffixes:
|
if ".inst" in file.suffixes and file.suffixes[-1] == ".cfg":
|
||||||
return [Directory(file, settings), Profile(file, settings), Formulas(file, settings)]
|
return [Directory(file, settings), Profile(file, settings), Formulas(file, settings)]
|
||||||
|
|
||||||
if ".def" in file.suffixes and ".json" in file.suffixes:
|
if ".def" in file.suffixes and file.suffixes[-1] == ".json":
|
||||||
if file.stem in ("fdmprinter.def", "fdmextruder.def"):
|
if file.stem in ("fdmprinter.def", "fdmextruder.def"):
|
||||||
return [Formulas(file, settings)]
|
return [Formulas(file, settings)]
|
||||||
return [Directory(file, settings), Definition(file, settings), Formulas(file, settings)]
|
return [Directory(file, settings), Definition(file, settings), Formulas(file, settings)]
|
||||||
|
@ -13,8 +13,11 @@ class Definition(Linter):
|
|||||||
def __init__(self, file: Path, settings: dict) -> None:
|
def __init__(self, file: Path, settings: dict) -> None:
|
||||||
super().__init__(file, settings)
|
super().__init__(file, settings)
|
||||||
self._definitions = {}
|
self._definitions = {}
|
||||||
|
self._definition_name = None
|
||||||
|
self._experimental_settings = []
|
||||||
self._loadDefinitionFiles(file)
|
self._loadDefinitionFiles(file)
|
||||||
self._content = self._file.read_text()
|
self._content = self._file.read_text()
|
||||||
|
self._loadExperimentalSettings()
|
||||||
self._loadBasePrinterSettings()
|
self._loadBasePrinterSettings()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -32,6 +35,10 @@ class Definition(Linter):
|
|||||||
for check in self.checkMaterialTemperature():
|
for check in self.checkMaterialTemperature():
|
||||||
yield check
|
yield check
|
||||||
|
|
||||||
|
if self._settings["checks"].get("diagnostic-definition-experimental-setting", False):
|
||||||
|
for check in self.checkExperimentalSetting():
|
||||||
|
yield check
|
||||||
|
|
||||||
# Add other which will yield Diagnostic's
|
# Add other which will yield Diagnostic's
|
||||||
# TODO: A check to determine if the user set value is with the min and max value defined in the parent and doesn't trigger a warning
|
# TODO: A check to determine if the user set value is with the min and max value defined in the parent and doesn't trigger a warning
|
||||||
# TODO: A check if the key exist in the first place
|
# TODO: A check if the key exist in the first place
|
||||||
@ -41,9 +48,8 @@ class Definition(Linter):
|
|||||||
|
|
||||||
def checkRedefineOverride(self) -> Iterator[Diagnostic]:
|
def checkRedefineOverride(self) -> Iterator[Diagnostic]:
|
||||||
""" Checks if definition file overrides its parents settings with the same value. """
|
""" Checks if definition file overrides its parents settings with the same value. """
|
||||||
definition_name = list(self._definitions.keys())[0]
|
definition = self._definitions[self._definition_name]
|
||||||
definition = self._definitions[definition_name]
|
if "overrides" in definition and self._definition_name not in ("fdmprinter", "fdmextruder"):
|
||||||
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
|
|
||||||
for key, value_dict in definition["overrides"].items():
|
for key, value_dict in definition["overrides"].items():
|
||||||
is_redefined, child_key, child_value, parent, inherited_by= self._isDefinedInParent(key, value_dict, definition['inherits'])
|
is_redefined, child_key, child_value, parent, inherited_by= self._isDefinedInParent(key, value_dict, definition['inherits'])
|
||||||
if is_redefined:
|
if is_redefined:
|
||||||
@ -71,9 +77,8 @@ class Definition(Linter):
|
|||||||
|
|
||||||
def checkMaterialTemperature(self) -> Iterator[Diagnostic]:
|
def checkMaterialTemperature(self) -> Iterator[Diagnostic]:
|
||||||
"""Checks if definition file has material tremperature defined within them"""
|
"""Checks if definition file has material tremperature defined within them"""
|
||||||
definition_name = list(self._definitions.keys())[0]
|
definition = self._definitions[self._definition_name]
|
||||||
definition = self._definitions[definition_name]
|
if "overrides" in definition and self._definition_name not in ("fdmprinter", "fdmextruder"):
|
||||||
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
|
|
||||||
for key, value_dict in definition["overrides"].items():
|
for key, value_dict in definition["overrides"].items():
|
||||||
if "temperature" in key and "material" in key:
|
if "temperature" in key and "material" in key:
|
||||||
|
|
||||||
@ -97,6 +102,22 @@ class Definition(Linter):
|
|||||||
replacements=replacements
|
replacements=replacements
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def checkExperimentalSetting(self) -> Iterator[Diagnostic]:
|
||||||
|
"""Checks if definition uses experimental settings"""
|
||||||
|
definition = self._definitions[self._definition_name]
|
||||||
|
if "overrides" in definition and self._definition_name not in ("fdmprinter", "fdmextruder"):
|
||||||
|
for setting in definition["overrides"]:
|
||||||
|
if setting in self._experimental_settings:
|
||||||
|
redefined = re.compile(setting)
|
||||||
|
found = redefined.search(self._content)
|
||||||
|
yield Diagnostic(
|
||||||
|
file=self._file,
|
||||||
|
diagnostic_name="diagnostic-definition-experimental-setting",
|
||||||
|
message=f"Setting {setting} is still experimental and should not be used in default profiles",
|
||||||
|
level="Warning",
|
||||||
|
offset=found.span(0)[0]
|
||||||
|
)
|
||||||
|
|
||||||
def _loadDefinitionFiles(self, definition_file) -> None:
|
def _loadDefinitionFiles(self, definition_file) -> None:
|
||||||
""" Loads definition file contents into self._definitions. Also load parent definition if it exists. """
|
""" Loads definition file contents into self._definitions. Also load parent definition if it exists. """
|
||||||
definition_name = Path(definition_file.stem).stem
|
definition_name = Path(definition_file.stem).stem
|
||||||
@ -104,6 +125,9 @@ class Definition(Linter):
|
|||||||
if not definition_file.exists() or definition_name in self._definitions:
|
if not definition_file.exists() or definition_name in self._definitions:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if self._definition_name is None:
|
||||||
|
self._definition_name = definition_name
|
||||||
|
|
||||||
# Load definition file into dictionary
|
# Load definition file into dictionary
|
||||||
self._definitions[definition_name] = json.loads(definition_file.read_text())
|
self._definitions[definition_name] = json.loads(definition_file.read_text())
|
||||||
|
|
||||||
@ -152,6 +176,12 @@ class Definition(Linter):
|
|||||||
return self._isDefinedInParent(key, value_dict, parent["inherits"])
|
return self._isDefinedInParent(key, value_dict, parent["inherits"])
|
||||||
return False, None, None, None, None
|
return False, None, None, None, None
|
||||||
|
|
||||||
|
def _loadExperimentalSettings(self):
|
||||||
|
try:
|
||||||
|
self._experimental_settings = self._definitions[self.base_def]["settings"]["experimental"]["children"].keys()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
def _loadBasePrinterSettings(self):
|
def _loadBasePrinterSettings(self):
|
||||||
settings = {}
|
settings = {}
|
||||||
for k, v in self._definitions[self.base_def]["settings"].items():
|
for k, v in self._definitions[self.base_def]["settings"].items():
|
||||||
|
@ -146,12 +146,13 @@ class Formulas(Linter):
|
|||||||
|
|
||||||
available_sections = ["values"]
|
available_sections = ["values"]
|
||||||
for section in available_sections:
|
for section in available_sections:
|
||||||
options = config.options(section)
|
if config.has_section(section):
|
||||||
for option in options:
|
options = config.options(section)
|
||||||
values ={}
|
for option in options:
|
||||||
values["value"] = config.get(section, option)
|
values ={}
|
||||||
overrides[option] = values
|
values["value"] = config.get(section, option)
|
||||||
file_data["overrides"]= overrides# Process the value here
|
overrides[option] = values
|
||||||
|
file_data["overrides"]= overrides# Process the value here
|
||||||
|
|
||||||
return file_data
|
return file_data
|
||||||
|
|
||||||
|
@ -37,6 +37,6 @@ class Profile(Linter):
|
|||||||
config = ConfigParser()
|
config = ConfigParser()
|
||||||
config.read([self._file])
|
config.read([self._file])
|
||||||
name_of_profile = config.get("general", "name")
|
name_of_profile = config.get("general", "name")
|
||||||
redefined = re.compile(name_of_profile)
|
redefined = re.compile(re.escape(name_of_profile))
|
||||||
found = redefined.search(self._content)
|
found = redefined.search(self._content)
|
||||||
return name_of_profile, found
|
return name_of_profile, found
|
||||||
|
@ -206,9 +206,9 @@ chardet==3.0.4 \
|
|||||||
idna==2.8 \
|
idna==2.8 \
|
||||||
--hash=sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 \
|
--hash=sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 \
|
||||||
--hash=sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c
|
--hash=sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c
|
||||||
attrs==21.2.0 \
|
attrs==21.3.0 \
|
||||||
--hash=sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1 \
|
--hash=sha256:8f7335278dedd26b58c38e006338242cc0977f06d51579b2b8b87b9b33bff66c \
|
||||||
--hash=sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb
|
--hash=sha256:50f3c9b216dc9021042f71b392859a773b904ce1a029077f58f6598272432045
|
||||||
requests==2.22.0 \
|
requests==2.22.0 \
|
||||||
--hash=sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 \
|
--hash=sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 \
|
||||||
--hash=sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31
|
--hash=sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31
|
||||||
@ -222,9 +222,9 @@ constantly==15.1.0 \
|
|||||||
hyperlink==21.0.0 \
|
hyperlink==21.0.0 \
|
||||||
--hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \
|
--hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \
|
||||||
--hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4
|
--hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4
|
||||||
incremental==21.3.0 \
|
incremental==22.10.0 \
|
||||||
--hash=sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57 \
|
--hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51 \
|
||||||
--hash=sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321
|
--hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0
|
||||||
zope.interface==5.4.0 \
|
zope.interface==5.4.0 \
|
||||||
--hash=sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3 \
|
--hash=sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3 \
|
||||||
--hash=sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54 \
|
--hash=sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54 \
|
||||||
|
1
resources/conandata.yml
Normal file
1
resources/conandata.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
version: "5.8.0-alpha.0"
|
62
resources/conanfile.py
Normal file
62
resources/conanfile.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
from conan import ConanFile
|
||||||
|
from conan.tools.files import copy, update_conandata
|
||||||
|
from conan.tools.scm import Version
|
||||||
|
from conan.errors import ConanInvalidConfiguration
|
||||||
|
|
||||||
|
required_conan_version = ">=1.58.0 <2.0.0"
|
||||||
|
|
||||||
|
|
||||||
|
class CuraResource(ConanFile):
|
||||||
|
name = "cura_resources"
|
||||||
|
license = ""
|
||||||
|
author = "UltiMaker"
|
||||||
|
url = "https://github.com/Ultimaker/cura"
|
||||||
|
description = "Cura Resources"
|
||||||
|
topics = ("conan", "cura")
|
||||||
|
settings = "os", "compiler", "build_type", "arch"
|
||||||
|
no_copy_source = True
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _shared_resources(self):
|
||||||
|
return ["definitions", "extruders", "images", "intent", "meshes", "quality", "variants"]
|
||||||
|
|
||||||
|
def set_version(self):
|
||||||
|
if not self.version:
|
||||||
|
self.version = self.conan_data["version"]
|
||||||
|
|
||||||
|
def export(self):
|
||||||
|
copy(self, pattern="LICENSE*", src=os.path.join(self.recipe_folder, ".."), dst=self.export_folder,
|
||||||
|
keep_path=False)
|
||||||
|
update_conandata(self, {"version": self.version})
|
||||||
|
|
||||||
|
def export_sources(self):
|
||||||
|
for shared_resources in self._shared_resources:
|
||||||
|
copy(self, pattern="*", src=os.path.join(self.recipe_folder, shared_resources),
|
||||||
|
dst=os.path.join(self.export_sources_folder, shared_resources))
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
if Version(self.version) <= Version("4"):
|
||||||
|
raise ConanInvalidConfiguration("Only versions 5+ are support")
|
||||||
|
|
||||||
|
def layout(self):
|
||||||
|
self.cpp.source.resdirs = self._shared_resources
|
||||||
|
self.cpp.package.resdirs = [f"res/{res}" for res in self._shared_resources]
|
||||||
|
|
||||||
|
def package(self):
|
||||||
|
copy(self, "*", os.path.join(self.export_sources_folder),
|
||||||
|
os.path.join(self.package_folder, "res"))
|
||||||
|
|
||||||
|
def package_info(self):
|
||||||
|
self.cpp_info.includedirs = []
|
||||||
|
self.runenv_info.append_path("CURA_RESOURCES", os.path.join(self.package_folder, "res"))
|
||||||
|
self.runenv_info.append_path("CURA_ENGINE_SEARCH_PATH", os.path.join(self.package_folder, "res", "definitions"))
|
||||||
|
self.runenv_info.append_path("CURA_ENGINE_SEARCH_PATH", os.path.join(self.package_folder, "res", "extruders"))
|
||||||
|
self.env_info.CURA_RESOURCES.append(os.path.join(self.package_folder, "res"))
|
||||||
|
self.env_info.CURA_ENGINE_SEARCH_PATH.append(os.path.join(self.package_folder, "res", "definitions"))
|
||||||
|
self.env_info.CURA_ENGINE_SEARCH_PATH.append(os.path.join(self.package_folder, "res", "definitions"))
|
||||||
|
|
||||||
|
def package_id(self):
|
||||||
|
self.info.clear()
|
246
resources/definitions/ankermake_m5c.def.json
Normal file
246
resources/definitions/ankermake_m5c.def.json
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "AnkerMake M5C",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "just-trey",
|
||||||
|
"manufacturer": "AnkerMake",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform": "ankermake_m5c_platform.obj",
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"machine_extruder_trains": { "0": "ankermake_m5c_extruder_0" },
|
||||||
|
"platform_texture": "ankermake_m5c.png",
|
||||||
|
"preferred_material": "generic_pla",
|
||||||
|
"preferred_quality_type": "normal"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled": { "value": true },
|
||||||
|
"acceleration_infill": { "value": 5000 },
|
||||||
|
"acceleration_layer_0": { "value": 2500 },
|
||||||
|
"acceleration_prime_tower": { "value": 5000 },
|
||||||
|
"acceleration_print": { "value": 5000 },
|
||||||
|
"acceleration_print_layer_0": { "value": 2500 },
|
||||||
|
"acceleration_roofing": { "value": 2500 },
|
||||||
|
"acceleration_skirt_brim": { "value": 2500 },
|
||||||
|
"acceleration_support": { "value": 5000 },
|
||||||
|
"acceleration_support_bottom": { "value": 5000 },
|
||||||
|
"acceleration_support_infill": { "value": 5000 },
|
||||||
|
"acceleration_support_interface": { "value": 5000 },
|
||||||
|
"acceleration_support_roof": { "value": 5000 },
|
||||||
|
"acceleration_topbottom": { "value": 2500 },
|
||||||
|
"acceleration_travel_layer_0": { "value": 2500 },
|
||||||
|
"acceleration_wall": { "value": 5000 },
|
||||||
|
"acceleration_wall_x": { "value": 5000 },
|
||||||
|
"adhesion_type": { "default_value": "skirt" },
|
||||||
|
"alternate_extra_perimeter": { "value": true },
|
||||||
|
"bottom_layers": { "value": 3 },
|
||||||
|
"bottom_skin_expand_distance": { "value": 0.84 },
|
||||||
|
"bottom_skin_preshrink": { "value": 0.84 },
|
||||||
|
"bottom_thickness": { "value": 0.8 },
|
||||||
|
"bridge_fan_speed_2": { "value": 100 },
|
||||||
|
"bridge_fan_speed_3": { "value": 100 },
|
||||||
|
"bridge_settings_enabled": { "value": true },
|
||||||
|
"bridge_skin_density_2": { "value": 80 },
|
||||||
|
"bridge_skin_material_flow": { "value": 100 },
|
||||||
|
"bridge_skin_material_flow_2": { "value": 80 },
|
||||||
|
"bridge_skin_speed": { "value": 20 },
|
||||||
|
"bridge_skin_speed_2": { "value": 50 },
|
||||||
|
"bridge_skin_speed_3": { "value": 50 },
|
||||||
|
"bridge_wall_material_flow": { "value": 100 },
|
||||||
|
"bridge_wall_speed": { "value": 20 },
|
||||||
|
"connect_infill_polygons": { "value": false },
|
||||||
|
"cool_fan_full_at_height": { "value": 0.14 },
|
||||||
|
"cool_min_layer_time": { "value": 6 },
|
||||||
|
"cool_min_speed": { "value": 30 },
|
||||||
|
"cross_infill_pocket_size": { "value": 8 },
|
||||||
|
"expand_skins_expand_distance": { "value": 0.84 },
|
||||||
|
"fill_outline_gaps": { "value": false },
|
||||||
|
"gantry_height": { "value": 25 },
|
||||||
|
"gradual_infill_step_height": { "value": 2 },
|
||||||
|
"infill_angles":
|
||||||
|
{
|
||||||
|
"value": [
|
||||||
|
90
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"infill_extruder_nr": { "value": -1 },
|
||||||
|
"infill_line_distance": { "value": 8 },
|
||||||
|
"infill_material_flow": { "value": 90 },
|
||||||
|
"infill_pattern": { "value": "'lines' if infill_sparse_density >= 25 else 'grid'" },
|
||||||
|
"infill_sparse_density": { "value": 10 },
|
||||||
|
"infill_sparse_thickness": { "value": 0.25 },
|
||||||
|
"infill_wipe_dist": { "value": 0.1 },
|
||||||
|
"initial_bottom_layers": { "value": 3 },
|
||||||
|
"jerk_enabled": { "value": true },
|
||||||
|
"jerk_infill": { "value": 15 },
|
||||||
|
"jerk_layer_0": { "value": 15 },
|
||||||
|
"jerk_prime_tower": { "value": 15 },
|
||||||
|
"jerk_print": { "value": 15 },
|
||||||
|
"jerk_print_layer_0": { "value": 15 },
|
||||||
|
"jerk_roofing": { "value": 15 },
|
||||||
|
"jerk_skirt_brim": { "value": 15 },
|
||||||
|
"jerk_support": { "value": 15 },
|
||||||
|
"jerk_support_bottom": { "value": 15 },
|
||||||
|
"jerk_support_infill": { "value": 15 },
|
||||||
|
"jerk_support_interface": { "value": 15 },
|
||||||
|
"jerk_support_roof": { "value": 15 },
|
||||||
|
"jerk_topbottom": { "value": 15 },
|
||||||
|
"jerk_travel": { "value": 15 },
|
||||||
|
"jerk_travel_layer_0": { "value": 15 },
|
||||||
|
"jerk_wall": { "value": 15 },
|
||||||
|
"jerk_wall_0": { "value": 15 },
|
||||||
|
"jerk_wall_x": { "value": 15 },
|
||||||
|
"machine_buildplate_type": { "value": "glass" },
|
||||||
|
"machine_depth": { "value": 220 },
|
||||||
|
"machine_heated_bed": { "value": true },
|
||||||
|
"machine_height": { "value": 250 },
|
||||||
|
"machine_max_jerk_e": { "value": 5 },
|
||||||
|
"machine_max_jerk_xy": { "value": 30 },
|
||||||
|
"machine_max_jerk_z": { "value": 0.3 },
|
||||||
|
"machine_name": { "default_value": "AnkerMake M5" },
|
||||||
|
"machine_shape": { "value": "rectangular" },
|
||||||
|
"machine_show_variants": { "value": false },
|
||||||
|
"machine_start_gcode": { "default_value": "M104 S{material_print_temperature_layer_0} ; set final nozzle temp\nM190 S{material_bed_temperature_layer_0} ; set and wait for nozzle temp to stabilize\nM109 S{material_print_temperature_layer_0} ; wait for nozzle temp to stabilize\nG28 ;Home\nG1 E10 F3600; push out retracted filament(fix for over retraction after prime)" },
|
||||||
|
"machine_width": { "value": 220 },
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"material_flow_layer_0": { "value": 120 },
|
||||||
|
"material_no_load_move_factor": { "value": 0.94 },
|
||||||
|
"minimum_interface_area": { "value": 10 },
|
||||||
|
"minimum_support_area": { "value": "2 if support_structure == 'normal' else 0" },
|
||||||
|
"retract_at_layer_change": { "value": true },
|
||||||
|
"retraction_amount": { "value": 0.8 },
|
||||||
|
"retraction_combing": { "value": "noskin" },
|
||||||
|
"retraction_combing_max_distance": { "value": 3 },
|
||||||
|
"retraction_extrusion_window": { "value": 0.8 },
|
||||||
|
"retraction_min_travel": { "value": 0.8 },
|
||||||
|
"retraction_prime_speed": { "value": 60 },
|
||||||
|
"retraction_retract_speed": { "value": 60 },
|
||||||
|
"retraction_speed": { "value": 60 },
|
||||||
|
"roofing_angles": { "value": [] },
|
||||||
|
"roofing_monotonic": { "value": false },
|
||||||
|
"roofing_pattern": { "value": "zigzag" },
|
||||||
|
"skin_material_flow": { "value": 97 },
|
||||||
|
"skin_monotonic": { "default_value": true },
|
||||||
|
"skirt_brim_speed":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 50
|
||||||
|
},
|
||||||
|
"skirt_line_count": { "value": 3 },
|
||||||
|
"small_feature_max_length": { "value": 9.42 },
|
||||||
|
"small_hole_max_size": { "value": 3 },
|
||||||
|
"speed_infill":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 270
|
||||||
|
},
|
||||||
|
"speed_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 50
|
||||||
|
},
|
||||||
|
"speed_prime_tower":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 500
|
||||||
|
},
|
||||||
|
"speed_print":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 500
|
||||||
|
},
|
||||||
|
"speed_print_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 50
|
||||||
|
},
|
||||||
|
"speed_roofing":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 150
|
||||||
|
},
|
||||||
|
"speed_support":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_support_bottom":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 166.667
|
||||||
|
},
|
||||||
|
"speed_support_infill":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_support_interface":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 166.667
|
||||||
|
},
|
||||||
|
"speed_support_roof":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 166.667
|
||||||
|
},
|
||||||
|
"speed_topbottom":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 150
|
||||||
|
},
|
||||||
|
"speed_travel":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 500
|
||||||
|
},
|
||||||
|
"speed_travel_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 150
|
||||||
|
},
|
||||||
|
"speed_wall":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_wall_0":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 150
|
||||||
|
},
|
||||||
|
"speed_wall_x":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": "550",
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_wall_x_roofing": { "maximum_value_warning": "550" },
|
||||||
|
"support_bottom_distance": { "value": 0.2 },
|
||||||
|
"support_brim_enable": { "value": false },
|
||||||
|
"support_brim_line_count": { "value": 20 },
|
||||||
|
"support_brim_width": { "value": 8 },
|
||||||
|
"support_infill_angles": { "value": [] },
|
||||||
|
"support_infill_rate": { "value": 30 },
|
||||||
|
"support_initial_layer_line_distance": { "value": 1.333 },
|
||||||
|
"support_line_distance": { "value": 1.333 },
|
||||||
|
"support_offset": { "value": 2 },
|
||||||
|
"support_top_distance": { "value": 0.2 },
|
||||||
|
"support_xy_distance": { "value": 0.8 },
|
||||||
|
"support_xy_overrides_z": { "value": "xy_overrides_z" },
|
||||||
|
"top_layers": { "value": 4 },
|
||||||
|
"top_skin_expand_distance": { "value": 0.84 },
|
||||||
|
"top_skin_preshrink": { "value": 0.84 },
|
||||||
|
"travel_avoid_distance": { "value": 0.63 },
|
||||||
|
"wall_0_extruder_nr": { "value": -1 },
|
||||||
|
"wall_extruder_nr": { "value": -1 },
|
||||||
|
"wall_line_width_0": { "value": 0.44 },
|
||||||
|
"wall_overhang_angle": { "value": 45 },
|
||||||
|
"wall_overhang_speed_factor": { "value": 40 },
|
||||||
|
"wall_thickness": { "value": 0.84 },
|
||||||
|
"wall_x_extruder_nr": { "value": -1 },
|
||||||
|
"zig_zaggify_infill": { "value": true }
|
||||||
|
}
|
||||||
|
}
|
55
resources/definitions/creality_k1max.def.json
Executable file
55
resources/definitions/creality_k1max.def.json
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Creality K1 Max",
|
||||||
|
"inherits": "creality_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Itay Grudev",
|
||||||
|
"manufacturer": "Creality3D",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"first_start_actions": [ "MachineSettingsAction" ],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"machine_extruder_trains": { "0": "creality_k1max_extruder_0" },
|
||||||
|
"preferred_material": "generic_pla",
|
||||||
|
"preferred_quality_type": "standard",
|
||||||
|
"preferred_variant_name": "0.4mm Nozzle",
|
||||||
|
"quality_definition": "creality_base",
|
||||||
|
"variants_name": "Nozzle Size"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"gantry_height": { "value": 45 },
|
||||||
|
"machine_depth": { "default_value": 300 },
|
||||||
|
"machine_end_gcode": { "default_value": "END_PRINT" },
|
||||||
|
"machine_head_with_fans_polygon":
|
||||||
|
{
|
||||||
|
"default_value": [
|
||||||
|
[-50, 40],
|
||||||
|
[-50, -62],
|
||||||
|
[25, 40],
|
||||||
|
[25, -62]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 300 },
|
||||||
|
"machine_max_acceleration_e": { "value": 5000 },
|
||||||
|
"machine_max_acceleration_x": { "value": 20000.0 },
|
||||||
|
"machine_max_acceleration_y": { "value": 20000.0 },
|
||||||
|
"machine_max_acceleration_z": { "value": 500.0 },
|
||||||
|
"machine_max_feedrate_e": { "value": 100 },
|
||||||
|
"machine_max_feedrate_x": { "value": 800 },
|
||||||
|
"machine_max_feedrate_y": { "value": 800 },
|
||||||
|
"machine_max_feedrate_z": { "value": 30 },
|
||||||
|
"machine_max_jerk_e": { "value": 2.5 },
|
||||||
|
"machine_max_jerk_xy": { "value": 9 },
|
||||||
|
"machine_max_jerk_z": { "value": 2 },
|
||||||
|
"machine_name": { "default_value": "Creality K1 Max" },
|
||||||
|
"machine_start_gcode": { "default_value": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0}\n" },
|
||||||
|
"machine_width": { "default_value": 300 },
|
||||||
|
"retraction_amount": { "default_value": 0.5 },
|
||||||
|
"retraction_speed": { "default_value": 40 }
|
||||||
|
}
|
||||||
|
}
|
@ -1342,6 +1342,15 @@
|
|||||||
"limit_to_extruder": "wall_0_extruder_nr",
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
},
|
},
|
||||||
|
"z_seam_on_vertex":
|
||||||
|
{
|
||||||
|
"label": "Z Seam On Vertex",
|
||||||
|
"description": "Place the z-seam on a polygon vertex. Switching this off can place the seam between vertices as well. (Keep in mind that this won't override the restrictions on placing the seam on an unsupported overhang.)",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": true,
|
||||||
|
"settable_per_mesh": true,
|
||||||
|
"enabled": "z_seam_type == 'back' or z_seam_type == 'shortest'"
|
||||||
|
},
|
||||||
"z_seam_position":
|
"z_seam_position":
|
||||||
{
|
{
|
||||||
"label": "Z Seam Position",
|
"label": "Z Seam Position",
|
||||||
@ -4775,6 +4784,34 @@
|
|||||||
"settable_per_mesh": true,
|
"settable_per_mesh": true,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
},
|
},
|
||||||
|
"support_z_seam_away_from_model":
|
||||||
|
{
|
||||||
|
"label": "Support Z Seam Away from Model",
|
||||||
|
"description": "Manage the spatial relationship between the z seam of the support structure and the actual 3D model. This control is crucial as it allows users to ensure the seamless removal of support structures post-printing, without inflicting damage or leaving marks on the printed model.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": true,
|
||||||
|
"enabled": "support_enable",
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_meshgroup": false,
|
||||||
|
"children":
|
||||||
|
{
|
||||||
|
"support_z_seam_min_distance":
|
||||||
|
{
|
||||||
|
"label": "Min Z Seam Distance from Model",
|
||||||
|
"description": "The distance between the model and its support structure at the z-axis seam.",
|
||||||
|
"unit": "mm",
|
||||||
|
"minimum_value": "0.001",
|
||||||
|
"value": "line_width * 2",
|
||||||
|
"default_value": 0.8,
|
||||||
|
"maximum_value_warning": "line_width * 4",
|
||||||
|
"type": "float",
|
||||||
|
"enabled": "support_z_seam_away_from_model and support_enable",
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_extruder": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"support_type":
|
"support_type":
|
||||||
{
|
{
|
||||||
"label": "Support Placement",
|
"label": "Support Placement",
|
||||||
@ -6180,6 +6217,7 @@
|
|||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
||||||
|
"resolve": "any(extruderValues('raft_remove_inside_corners'))",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": false,
|
"settable_per_extruder": false,
|
||||||
"children":
|
"children":
|
||||||
@ -6192,6 +6230,7 @@
|
|||||||
"value": "raft_remove_inside_corners",
|
"value": "raft_remove_inside_corners",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
||||||
|
"resolve": "any(extruderValues('raft_base_remove_inside_corners'))",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": false
|
"settable_per_extruder": false
|
||||||
},
|
},
|
||||||
@ -6203,6 +6242,7 @@
|
|||||||
"value": "raft_remove_inside_corners",
|
"value": "raft_remove_inside_corners",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
||||||
|
"resolve": "any(extruderValues('raft_interface_remove_inside_corners'))",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": false
|
"settable_per_extruder": false
|
||||||
},
|
},
|
||||||
@ -6214,6 +6254,7 @@
|
|||||||
"value": "raft_remove_inside_corners",
|
"value": "raft_remove_inside_corners",
|
||||||
"default_value": false,
|
"default_value": false,
|
||||||
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
|
||||||
|
"resolve": "any(extruderValues('raft_surface_remove_inside_corners'))",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": false
|
"settable_per_extruder": false
|
||||||
}
|
}
|
||||||
@ -6817,7 +6858,7 @@
|
|||||||
"label": "Prime Tower Type",
|
"label": "Prime Tower Type",
|
||||||
"description": "<html>How to generate the prime tower:<ul><li><b>Normal:</b> create a bucket in which secondary materials are primed</li><li><b>Interleaved:</b> create a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other</li></ul></html>",
|
"description": "<html>How to generate the prime tower:<ul><li><b>Normal:</b> create a bucket in which secondary materials are primed</li><li><b>Interleaved:</b> create a prime tower as sparse as possible. This will save time and filament, but is only possible if the used materials adhere to each other</li></ul></html>",
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"value": "'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'",
|
"resolve": "'interleaved' if all(mode == 'interleaved' for mode in extruderValues('prime_tower_mode')) else 'interleaved' if (all(material_type_var == extruderValues('material_type')[0] for material_type_var in extruderValues('material_type')) and all(material_brand_var == extruderValues('material_brand')[0] for material_brand_var in extruderValues('material_brand'))) else 'normal'",
|
||||||
"options":
|
"options":
|
||||||
{
|
{
|
||||||
"normal": "Normal",
|
"normal": "Normal",
|
||||||
@ -7993,6 +8034,19 @@
|
|||||||
"default_value": 90,
|
"default_value": 90,
|
||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
},
|
},
|
||||||
|
"seam_overhang_angle":
|
||||||
|
{
|
||||||
|
"label": "Seam Overhanging Wall Angle",
|
||||||
|
"description": "Try to prevent seams on walls that overhang more than this angle. When the value is 90, no walls will be treated as overhanging.",
|
||||||
|
"unit": "\u00b0",
|
||||||
|
"type": "float",
|
||||||
|
"minimum_value": "0",
|
||||||
|
"minimum_value_warning": "2",
|
||||||
|
"maximum_value": "90",
|
||||||
|
"default_value": 90,
|
||||||
|
"value": "wall_overhang_angle",
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
"wall_overhang_speed_factor":
|
"wall_overhang_speed_factor":
|
||||||
{
|
{
|
||||||
"label": "Overhanging Wall Speed",
|
"label": "Overhanging Wall Speed",
|
||||||
|
@ -80,6 +80,7 @@
|
|||||||
"maximum_value_warning": "120",
|
"maximum_value_warning": "120",
|
||||||
"minimum_value": "0"
|
"minimum_value": "0"
|
||||||
},
|
},
|
||||||
|
"material_print_temp_wait": { "value": false },
|
||||||
"material_print_temperature": { "minimum_value": "0" },
|
"material_print_temperature": { "minimum_value": "0" },
|
||||||
"material_standby_temperature":
|
"material_standby_temperature":
|
||||||
{
|
{
|
||||||
|
259
resources/definitions/ultimaker_sketch.def.json
Normal file
259
resources/definitions/ultimaker_sketch.def.json
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "UltiMaker Sketch",
|
||||||
|
"inherits": "ultimaker",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Ultimaker",
|
||||||
|
"manufacturer": "Ultimaker B.V.",
|
||||||
|
"file_formats": "application/x-makerbot-sketch",
|
||||||
|
"platform": "ultimaker_sketch_platform.obj",
|
||||||
|
"exclude_materials": [
|
||||||
|
"dsm_175_novamidid1030cf",
|
||||||
|
"Essentium_175_UltrafuseZPCTG",
|
||||||
|
"imade3d_petg_175",
|
||||||
|
"imade3d_pla_175",
|
||||||
|
"imade3d_petg_green",
|
||||||
|
"imade3d_pla_green",
|
||||||
|
"imade3d_petg_pink",
|
||||||
|
"imade3d_pla_pink",
|
||||||
|
"chromatik_pla",
|
||||||
|
"3D-Fuel_PLA_PRO_Black",
|
||||||
|
"3D-Fuel_PLA_SnapSupport",
|
||||||
|
"bestfilament_abs_skyblue",
|
||||||
|
"bestfilament_petg_orange",
|
||||||
|
"bestfilament_pla_green",
|
||||||
|
"dsm_arnitel2045_175",
|
||||||
|
"dsm_novamid1070_175",
|
||||||
|
"emotiontech_abs",
|
||||||
|
"emotiontech_absx",
|
||||||
|
"emotiontech_acetate",
|
||||||
|
"emotiontech_asax",
|
||||||
|
"emotiontech_bvoh",
|
||||||
|
"emotiontech_copa",
|
||||||
|
"emotiontech_hips",
|
||||||
|
"emotiontech_nylon_1030",
|
||||||
|
"emotiontech_nylon_1030cf",
|
||||||
|
"emotiontech_nylon_1070",
|
||||||
|
"emotiontech_pc",
|
||||||
|
"emotiontech_pekk",
|
||||||
|
"emotiontech_petg",
|
||||||
|
"emotiontech_pla",
|
||||||
|
"emotiontech_pla_hr_870",
|
||||||
|
"emotiontech_pva-m",
|
||||||
|
"emotiontech_pva-s",
|
||||||
|
"emotiontech_tpu98a",
|
||||||
|
"eryone_petg",
|
||||||
|
"eryone_pla",
|
||||||
|
"eryone_pla_glow",
|
||||||
|
"eryone_pla_matte",
|
||||||
|
"eryone_pla_wood",
|
||||||
|
"eryone_tpu",
|
||||||
|
"eSUN_PETG_Black",
|
||||||
|
"eSUN_PETG_Grey",
|
||||||
|
"eSUN_PETG_Purple",
|
||||||
|
"eSUN_PLA_PRO_Black",
|
||||||
|
"eSUN_PLA_PRO_Grey",
|
||||||
|
"eSUN_PLA_PRO_Purple",
|
||||||
|
"eSUN_PLA_PRO_White",
|
||||||
|
"Extrudr_GreenTECPro_Anthracite_175",
|
||||||
|
"Extrudr_GreenTECPro_Black_175",
|
||||||
|
"Extrudr_GreenTECPro_Blue_175",
|
||||||
|
"Extrudr_GreenTECPro_Nature_175",
|
||||||
|
"Extrudr_GreenTECPro_Red_175",
|
||||||
|
"Extrudr_GreenTECPro_Silver_175",
|
||||||
|
"Extrudr_GreenTECPro_White_175",
|
||||||
|
"fabtotum_abs",
|
||||||
|
"fabtotum_nylon",
|
||||||
|
"fabtotum_pla",
|
||||||
|
"fabtotum_tpu",
|
||||||
|
"fdplast_abs_tomato",
|
||||||
|
"fdplast_petg_gray",
|
||||||
|
"fdplast_pla_olive",
|
||||||
|
"filo3d_pla",
|
||||||
|
"filo3d_pla_green",
|
||||||
|
"filo3d_pla_red",
|
||||||
|
"generic_asa_175",
|
||||||
|
"generic_abs_175",
|
||||||
|
"generic_absr_175",
|
||||||
|
"generic_bvoh_175",
|
||||||
|
"generic_cpe_175",
|
||||||
|
"generic_cffpa_175",
|
||||||
|
"generic_hips_175",
|
||||||
|
"generic_nylon_175",
|
||||||
|
"generic_pc_175",
|
||||||
|
"generic_petg_175",
|
||||||
|
"generic_pva_175",
|
||||||
|
"generic_rapidrinse_175",
|
||||||
|
"generic_sr30_175",
|
||||||
|
"generic_tpu_175",
|
||||||
|
"goofoo_abs",
|
||||||
|
"goofoo_asa",
|
||||||
|
"goofoo_bronze_pla",
|
||||||
|
"goofoo_emarble_pla",
|
||||||
|
"goofoo_esilk_pla",
|
||||||
|
"goofoo_hips",
|
||||||
|
"goofoo_pa",
|
||||||
|
"goofoo_pa_cf",
|
||||||
|
"goofoo_pc",
|
||||||
|
"goofoo_peek",
|
||||||
|
"goofoo_petg",
|
||||||
|
"goofoo_pla",
|
||||||
|
"goofoo_pva",
|
||||||
|
"goofoo_tpe_83a",
|
||||||
|
"goofoo_tpu_87a",
|
||||||
|
"goofoo_tpu_95a",
|
||||||
|
"goofoo_wood_pla",
|
||||||
|
"ideagen3D_ToughPLA",
|
||||||
|
"imade3d_petg_175",
|
||||||
|
"imade3d_pla_175",
|
||||||
|
"innofill_innoflex60_175",
|
||||||
|
"layer_one_black_pla",
|
||||||
|
"layer_one_dark_gray_pla",
|
||||||
|
"layer_one_white_pla",
|
||||||
|
"leapfrog_abs_natural",
|
||||||
|
"leapfrog_epla_natural",
|
||||||
|
"leapfrog_pva_natural",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_abs",
|
||||||
|
"redd_asa",
|
||||||
|
"redd_hips",
|
||||||
|
"redd_nylon",
|
||||||
|
"redd_petg",
|
||||||
|
"redd_pla",
|
||||||
|
"redd_tpe",
|
||||||
|
"tizyx_abs",
|
||||||
|
"tizyx_flex",
|
||||||
|
"tizyx_petg",
|
||||||
|
"tizyx_pla",
|
||||||
|
"tizyx_pla_bois",
|
||||||
|
"tizyx_pva",
|
||||||
|
"verbatim_bvoh_175",
|
||||||
|
"Vertex_Delta_ABS",
|
||||||
|
"Vertex_Delta_PET",
|
||||||
|
"Vertex_Delta_PLA",
|
||||||
|
"Vertex_Delta_PLA_Glitter",
|
||||||
|
"Vertex_Delta_PLA_Mat",
|
||||||
|
"Vertex_Delta_PLA_Satin",
|
||||||
|
"Vertex_Delta_PLA_Wood",
|
||||||
|
"Vertex_Delta_TPU",
|
||||||
|
"volumic_abs_ultra",
|
||||||
|
"volumic_arma_ultra",
|
||||||
|
"volumic_asa_ultra",
|
||||||
|
"volumic_br80_ultra",
|
||||||
|
"volumic_bumper_ultra",
|
||||||
|
"volumic_cu80_ultra",
|
||||||
|
"volumic_flex93_ultra",
|
||||||
|
"volumic_medical_ultra",
|
||||||
|
"volumic_nylon_ultra",
|
||||||
|
"volumic_pekk_carbone",
|
||||||
|
"volumic_petgcarbone_ultra",
|
||||||
|
"volumic_petg_ultra",
|
||||||
|
"volumic_pla_ultra",
|
||||||
|
"volumic_pp_ultra",
|
||||||
|
"volumic_strong_ultra",
|
||||||
|
"volumic_support_ultra",
|
||||||
|
"xyzprinting_abs",
|
||||||
|
"xyzprinting_antibact_pla",
|
||||||
|
"xyzprinting_carbon_fiber",
|
||||||
|
"xyzprinting_colorinkjet_pla",
|
||||||
|
"xyzprinting_flexible",
|
||||||
|
"xyzprinting_metallic_pla",
|
||||||
|
"xyzprinting_nylon",
|
||||||
|
"xyzprinting_pahtcf15",
|
||||||
|
"xyzprinting_pc",
|
||||||
|
"xyzprinting_petcf15",
|
||||||
|
"xyzprinting_petg",
|
||||||
|
"xyzprinting_pla",
|
||||||
|
"xyzprinting_ppgf30",
|
||||||
|
"xyzprinting_tough_pla",
|
||||||
|
"xyzprinting_tpu",
|
||||||
|
"zyyx_pro_flex",
|
||||||
|
"zyyx_pro_pla",
|
||||||
|
"octofiber_pla",
|
||||||
|
"fiberlogy_hd_pla"
|
||||||
|
],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": false,
|
||||||
|
"machine_extruder_trains": { "0": "ultimaker_sketch_extruder" },
|
||||||
|
"platform_offset": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"platform_texture": "MakerbotSketch.png",
|
||||||
|
"preferred_quality_type": "draft",
|
||||||
|
"preferred_variant_name": "0.4mm",
|
||||||
|
"reference_machine_id": "sketch",
|
||||||
|
"supports_network_connection": true,
|
||||||
|
"supports_usb_connection": false,
|
||||||
|
"variant_definition": "ultimaker_sketch",
|
||||||
|
"variants_name": "Extruder",
|
||||||
|
"weight": -1
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled": { "value": false },
|
||||||
|
"adhesion_type": { "value": "'raft'" },
|
||||||
|
"brim_width": { "value": "3" },
|
||||||
|
"cool_fan_speed": { "value": "100" },
|
||||||
|
"extruder_prime_pos_abs": { "default_value": true },
|
||||||
|
"gantry_height": { "value": "60" },
|
||||||
|
"infill_overlap": { "value": 15 },
|
||||||
|
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
|
||||||
|
"infill_sparse_density": { "value": 15 },
|
||||||
|
"jerk_enabled": { "value": false },
|
||||||
|
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
|
||||||
|
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
"machine_depth": { "default_value": 150 },
|
||||||
|
"machine_end_gcode": { "default_value": "M107; Disable Fan; \n; End of print; \n; End GCode\nM104 S0 T0; Set Toolhead Temp to 0\nM140 S0 T0; Set Platform Temp to 0\nG162 Z F1800; Move to max axes position\nG28 X Y; Home\nM652; Turn off back fan\nM132 X Y Z A B; Set Home Position\nG91; Use Relative Positioning\nM18; Disable Axes\n\n" },
|
||||||
|
"machine_extruder_count": { "default_value": 1 },
|
||||||
|
"machine_gcode_flavor": { "default_value": "Griffin" },
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 150 },
|
||||||
|
"machine_max_feedrate_x": { "default_value": 300 },
|
||||||
|
"machine_max_feedrate_y": { "default_value": 300 },
|
||||||
|
"machine_max_feedrate_z": { "default_value": 40 },
|
||||||
|
"machine_min_cool_heat_time_window": { "value": "15" },
|
||||||
|
"machine_name": { "default_value": "UltiMaker Sketch" },
|
||||||
|
"machine_nozzle_cool_down_speed": { "default_value": 0.8 },
|
||||||
|
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
|
||||||
|
"machine_start_gcode": { "default_value": "M140 S50 T0; Set Platform Temp\nM104 S220 T0; Set Extruder Temp\nG90; Use Absolute Positioning\nG28; Home\nM132 X Y Z A B; Set Current Position to Home\nG161 X Y F3300; Move to min axes positions\nM7 T0; Wait For Platform to Heat\nM6 T0; Wait For Extruders to Heat\nM651; Turn on back fan\nM907 X100 Y100 Z40 A80 B20; Set Stepper Currents\nM106; Enable Cooling Fan\n; Purge Line\nG92 E0; Reset Extruder Axis Position\nG1 X-26.18 Y-75.90 Z0.200 F420\nG1 X26.18 Y-75.90 E10\nG92 E0; Reset Extruder Axis Position\n; Start GCode\n" },
|
||||||
|
"machine_width": { "default_value": 150 },
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"material_flow": { "default_value": 109 },
|
||||||
|
"multiple_mesh_overlap": { "value": "0" },
|
||||||
|
"optimize_wall_printing_order": { "value": "True" },
|
||||||
|
"prime_blob_enable":
|
||||||
|
{
|
||||||
|
"default_value": true,
|
||||||
|
"enabled": true,
|
||||||
|
"value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
|
||||||
|
},
|
||||||
|
"raft_margin": { "value": "5" },
|
||||||
|
"retraction_amount": { "value": "5.5" },
|
||||||
|
"retraction_prime_speed": { "value": "15" },
|
||||||
|
"retraction_speed": { "value": "25" },
|
||||||
|
"speed_print": { "value": 60 },
|
||||||
|
"speed_support": { "value": "0.7 * speed_print" },
|
||||||
|
"speed_support_interface": { "value": "speed_topbottom" },
|
||||||
|
"speed_topbottom": { "value": "0.7 * speed_print" },
|
||||||
|
"speed_travel": { "value": 80 },
|
||||||
|
"speed_wall": { "value": "0.7 * speed_print" },
|
||||||
|
"speed_wall_0": { "value": "0.5 * speed_print " },
|
||||||
|
"speed_wall_x": { "value": "speed_wall" },
|
||||||
|
"speed_z_hop": { "value": 7 },
|
||||||
|
"support_angle": { "value": "45" },
|
||||||
|
"top_bottom_thickness": { "value": "4 * layer_height" },
|
||||||
|
"travel_avoid_distance": { "value": "machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
||||||
|
"wall_0_inset": { "value": "0" },
|
||||||
|
"wall_thickness": { "value": "2 * machine_nozzle_size" },
|
||||||
|
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
|
||||||
|
}
|
||||||
|
}
|
15
resources/extruders/ankermake_m5c_extruder_0.def.json
Normal file
15
resources/extruders/ankermake_m5c_extruder_0.def.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "ankermake_m5c",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
16
resources/extruders/creality_k1max_extruder_0.def.json
Executable file
16
resources/extruders/creality_k1max_extruder_0.def.json
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "creality_k1max",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
22
resources/extruders/ultimaker_sketch_extruder.def.json
Normal file
22
resources/extruders/ultimaker_sketch_extruder.def.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "ultimaker_sketch",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr":
|
||||||
|
{
|
||||||
|
"default_value": 0,
|
||||||
|
"maximum_value": "1"
|
||||||
|
},
|
||||||
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
BIN
resources/images/MakerbotSketch.png
Normal file
BIN
resources/images/MakerbotSketch.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
resources/images/ankermake_m5c.png
Normal file
BIN
resources/images/ankermake_m5c.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 517 KiB |
745
resources/meshes/ankermake_m5c_platform.obj
Normal file
745
resources/meshes/ankermake_m5c_platform.obj
Normal file
@ -0,0 +1,745 @@
|
|||||||
|
# Exported from 3D Builder
|
||||||
|
mtllib D:\Documents\Projects\AnkerMake-M5-Profile\5.1\images\AM-M5-bed.mtl
|
||||||
|
|
||||||
|
o Object.1
|
||||||
|
v 121.092972 123.154205 -0.102764
|
||||||
|
v 119.840958 123.932068 -0.102778
|
||||||
|
v 119.840958 123.932068 0.097220
|
||||||
|
v 121.092972 123.154205 0.097234
|
||||||
|
v 78.657051 -126.525543 0.102253
|
||||||
|
v 78.012062 -126.955132 0.102262
|
||||||
|
v 78.012062 -126.955139 -0.097736
|
||||||
|
v 78.657051 -126.525551 -0.097745
|
||||||
|
v -75.704933 -141.014282 -0.097276
|
||||||
|
v -75.352928 -141.851379 -0.097260
|
||||||
|
v -75.352928 -141.851364 0.102738
|
||||||
|
v -75.704933 -141.014282 0.102722
|
||||||
|
v -74.881927 -142.616196 -0.097246
|
||||||
|
v -74.881927 -142.616180 0.102752
|
||||||
|
v 116.994965 124.874573 -0.102794
|
||||||
|
v 118.468956 124.512222 -0.102788
|
||||||
|
v 115.440956 125.000031 -0.102794
|
||||||
|
v 122.205963 122.196655 -0.102746
|
||||||
|
v 123.159973 121.079498 -0.102725
|
||||||
|
v 123.935974 119.821854 -0.102701
|
||||||
|
v 124.513977 118.444763 -0.102674
|
||||||
|
v 124.874969 116.966278 -0.102645
|
||||||
|
v 124.999969 115.405518 -0.102615
|
||||||
|
v 79.364059 -126.202339 0.102246
|
||||||
|
v 79.364059 -126.202347 -0.097752
|
||||||
|
v -76.946938 -128.027161 0.102464
|
||||||
|
v -76.946938 -128.027161 -0.097534
|
||||||
|
v -76.547928 -128.674576 -0.097521
|
||||||
|
v -76.547928 -128.674561 0.102477
|
||||||
|
v 80.123062 -125.999588 0.102241
|
||||||
|
v 80.123062 -125.999596 -0.097757
|
||||||
|
v 80.924057 -125.929337 -0.097759
|
||||||
|
v 80.924057 -125.929329 0.102239
|
||||||
|
v 125.000061 -116.334778 -0.098002
|
||||||
|
v 124.875061 -117.895561 -0.097971
|
||||||
|
v -115.441032 124.999939 -0.102525
|
||||||
|
v 75.924065 -140.114868 -0.097471
|
||||||
|
v 75.924065 -140.114868 0.102527
|
||||||
|
v 75.705070 -141.014221 0.102545
|
||||||
|
v 75.705070 -141.014221 -0.097453
|
||||||
|
v 74.301064 -143.294632 -0.097406
|
||||||
|
v 74.301064 -143.294632 0.102592
|
||||||
|
v 73.625069 -143.876816 -0.097394
|
||||||
|
v 118.468956 124.512222 0.097210
|
||||||
|
v 74.881050 -142.616135 -0.097420
|
||||||
|
v 74.881050 -142.616135 0.102578
|
||||||
|
v 116.994965 124.874573 0.097204
|
||||||
|
v 75.353065 -141.851318 -0.097436
|
||||||
|
v 75.353065 -141.851318 0.102562
|
||||||
|
v 115.440956 125.000031 0.097204
|
||||||
|
v 115.441055 -125.929314 0.102198
|
||||||
|
v 115.441055 -125.929321 -0.097800
|
||||||
|
v 116.995064 -125.803848 -0.097804
|
||||||
|
v 116.995064 -125.803841 0.102194
|
||||||
|
v 118.469055 -125.441521 -0.097813
|
||||||
|
v 118.469055 -125.441513 0.102185
|
||||||
|
v -124.999947 -116.334877 -0.097710
|
||||||
|
v -125.000031 115.405426 0.097675
|
||||||
|
v -125.000031 115.405418 -0.102323
|
||||||
|
v 119.841057 -124.861359 -0.097826
|
||||||
|
v 119.841057 -124.861351 0.102172
|
||||||
|
v 121.093071 -124.082481 -0.097843
|
||||||
|
v 121.093071 -124.082474 0.102155
|
||||||
|
v -124.874954 -117.895653 0.102319
|
||||||
|
v -124.513947 -119.374130 0.102348
|
||||||
|
v -124.999947 -116.334869 0.102288
|
||||||
|
v 124.514069 -119.374039 -0.097941
|
||||||
|
v 123.936066 -120.751137 -0.097913
|
||||||
|
v 123.160065 -122.008789 -0.097887
|
||||||
|
v 122.206055 -123.124947 -0.097863
|
||||||
|
v 122.206055 -123.124939 0.102135
|
||||||
|
v 74.000061 -122.918182 -0.097811
|
||||||
|
v -72.999939 -122.918236 -0.097640
|
||||||
|
v 123.160065 -122.008789 0.102111
|
||||||
|
v 123.936066 -120.751137 0.102085
|
||||||
|
v -116.996040 124.874481 0.097477
|
||||||
|
v -116.996040 124.874481 -0.102521
|
||||||
|
v -118.469032 124.512131 -0.102512
|
||||||
|
v -118.469032 124.512131 0.097486
|
||||||
|
v 124.514069 -119.374039 0.102057
|
||||||
|
v -119.841042 123.931976 -0.102499
|
||||||
|
v -119.841042 123.931976 0.097499
|
||||||
|
v 124.875061 -117.895561 0.102027
|
||||||
|
v -121.094032 123.154114 -0.102482
|
||||||
|
v -121.094032 123.154114 0.097516
|
||||||
|
v 125.000061 -116.334778 0.101996
|
||||||
|
v -122.207047 122.196564 -0.102462
|
||||||
|
v -122.207047 122.196564 0.097537
|
||||||
|
v -123.161026 121.079407 -0.102438
|
||||||
|
v -123.161026 121.079407 0.097560
|
||||||
|
v -123.936020 119.821762 -0.102412
|
||||||
|
v -123.936020 119.821762 0.097586
|
||||||
|
v 76.250061 -129.496536 -0.097683
|
||||||
|
v 76.548050 -128.762833 -0.097698
|
||||||
|
v 76.948059 -128.086334 -0.097712
|
||||||
|
v -124.514038 118.444664 -0.102384
|
||||||
|
v -124.514038 118.444672 0.097614
|
||||||
|
v -124.875038 116.966179 -0.102354
|
||||||
|
v -124.875038 116.966187 0.097644
|
||||||
|
v 77.439056 -127.480080 -0.097724
|
||||||
|
v 76.000069 -139.166367 0.102508
|
||||||
|
v 76.000069 -139.166367 -0.097490
|
||||||
|
v -115.441032 124.999939 0.097473
|
||||||
|
v 76.000061 -131.083420 0.102347
|
||||||
|
v 76.000061 -131.083420 -0.097651
|
||||||
|
v -80.121941 -126.071922 0.102429
|
||||||
|
v -80.922943 -126.007690 0.102429
|
||||||
|
v -80.922943 -126.007698 -0.097569
|
||||||
|
v -80.121941 -126.071930 -0.097569
|
||||||
|
v 124.874969 116.966278 0.097353
|
||||||
|
v 124.999969 115.405518 0.097383
|
||||||
|
v 76.064056 -130.274429 0.102331
|
||||||
|
v 76.064056 -130.274445 -0.097667
|
||||||
|
v 124.513977 118.444763 0.097324
|
||||||
|
v -79.363937 -126.258606 0.102432
|
||||||
|
v -79.363937 -126.258614 -0.097566
|
||||||
|
v 74.000069 -142.992523 -0.097412
|
||||||
|
v 123.935974 119.821869 0.097297
|
||||||
|
v 76.250061 -129.496536 0.102315
|
||||||
|
v -78.656929 -126.557716 0.102437
|
||||||
|
v -78.656929 -126.557724 -0.097561
|
||||||
|
v 123.159973 121.079514 0.097273
|
||||||
|
v 76.548050 -128.762817 0.102300
|
||||||
|
v 122.205963 122.196655 0.097252
|
||||||
|
v -78.011940 -126.959198 0.102444
|
||||||
|
v -78.011940 -126.959206 -0.097554
|
||||||
|
v 76.948059 -128.086319 0.102286
|
||||||
|
v -77.438934 -127.452026 0.102454
|
||||||
|
v -77.438934 -127.452034 -0.097544
|
||||||
|
v 77.439056 -127.480072 0.102274
|
||||||
|
v -74.301933 -143.294693 -0.097233
|
||||||
|
v -74.301933 -143.294678 0.102765
|
||||||
|
v -73.624931 -143.876877 -0.097222
|
||||||
|
v -73.624931 -143.876862 0.102776
|
||||||
|
v -88.022942 -125.929398 -0.097562
|
||||||
|
v -121.093933 -124.082565 0.102437
|
||||||
|
v -76.249939 -129.384201 -0.097507
|
||||||
|
v -88.022942 -126.007698 -0.097561
|
||||||
|
v -76.063942 -130.146011 -0.097492
|
||||||
|
v -75.999939 -130.948990 -0.097476
|
||||||
|
v -72.999931 -142.992584 -0.097240
|
||||||
|
v 71.133072 -144.923676 -0.097370
|
||||||
|
v 72.029060 -144.703873 -0.097375
|
||||||
|
v 70.188072 -144.999969 -0.097367
|
||||||
|
v 72.863068 -144.350555 -0.097383
|
||||||
|
v -70.187927 -145.000031 -0.097204
|
||||||
|
v -72.028931 -144.703934 -0.097207
|
||||||
|
v -71.133934 -144.923737 -0.097204
|
||||||
|
v -72.863922 -144.350616 -0.097213
|
||||||
|
v -75.999931 -139.166428 -0.097313
|
||||||
|
v -75.923935 -140.114929 -0.097294
|
||||||
|
v 70.188072 -144.999969 0.102631
|
||||||
|
v -70.187927 -145.000015 0.102794
|
||||||
|
v 71.133072 -144.923676 0.102628
|
||||||
|
v 72.029060 -144.703873 0.102623
|
||||||
|
v 72.863068 -144.350555 0.102615
|
||||||
|
v 73.625069 -143.876816 0.102604
|
||||||
|
v -72.863922 -144.350601 0.102785
|
||||||
|
v -72.028931 -144.703918 0.102791
|
||||||
|
v -71.133934 -144.923721 0.102794
|
||||||
|
v -115.440933 -125.929413 -0.097530
|
||||||
|
v -116.995941 -125.803940 -0.097531
|
||||||
|
v -118.468933 -125.441612 -0.097537
|
||||||
|
v -119.840942 -124.861450 -0.097547
|
||||||
|
v -121.093933 -124.082573 -0.097561
|
||||||
|
v -122.206947 -123.125038 -0.097578
|
||||||
|
v -123.160934 -122.008888 -0.097599
|
||||||
|
v -123.935928 -120.751236 -0.097624
|
||||||
|
v -124.513947 -119.374138 -0.097650
|
||||||
|
v -124.874954 -117.895660 -0.097679
|
||||||
|
v -76.249939 -129.384186 0.102491
|
||||||
|
v -76.063942 -130.145996 0.102506
|
||||||
|
v -75.999939 -130.948975 0.102522
|
||||||
|
v -75.999931 -139.166428 0.102685
|
||||||
|
v -88.022942 -125.929398 0.102436
|
||||||
|
v -88.022942 -126.007698 0.102437
|
||||||
|
v -123.935928 -120.751228 0.102374
|
||||||
|
v -123.160934 -122.008881 0.102399
|
||||||
|
v -122.206947 -123.125031 0.102420
|
||||||
|
v -119.840942 -124.861443 0.102451
|
||||||
|
v -118.468933 -125.441605 0.102461
|
||||||
|
v -116.995941 -125.803932 0.102467
|
||||||
|
v -115.440933 -125.929405 0.102468
|
||||||
|
v -75.923935 -140.114929 0.102704
|
||||||
|
|
||||||
|
usemtl Material.001_0
|
||||||
|
f 1 2 3
|
||||||
|
f 1 3 4
|
||||||
|
f 18 1 4
|
||||||
|
f 18 4 124
|
||||||
|
f 19 18 124
|
||||||
|
f 19 124 122
|
||||||
|
f 20 19 122
|
||||||
|
f 20 122 118
|
||||||
|
f 21 20 118
|
||||||
|
f 21 118 114
|
||||||
|
f 22 21 114
|
||||||
|
f 22 114 110
|
||||||
|
f 23 22 110
|
||||||
|
f 23 110 111
|
||||||
|
f 23 111 34
|
||||||
|
f 17 36 50
|
||||||
|
f 15 17 50
|
||||||
|
f 15 50 47
|
||||||
|
f 16 15 47
|
||||||
|
f 16 47 44
|
||||||
|
f 2 16 44
|
||||||
|
f 70 74 71
|
||||||
|
f 62 70 71
|
||||||
|
f 69 68 75
|
||||||
|
f 69 75 74
|
||||||
|
f 35 86 83
|
||||||
|
f 67 35 83
|
||||||
|
f 35 34 86
|
||||||
|
f 67 83 80
|
||||||
|
f 68 67 80
|
||||||
|
f 68 80 75
|
||||||
|
f 60 62 63
|
||||||
|
f 60 63 61
|
||||||
|
f 55 60 61
|
||||||
|
f 55 61 56
|
||||||
|
f 53 55 56
|
||||||
|
f 53 56 54
|
||||||
|
f 51 53 54
|
||||||
|
f 51 33 52
|
||||||
|
f 32 52 33
|
||||||
|
f 32 33 30
|
||||||
|
f 32 30 31
|
||||||
|
f 120 116 121
|
||||||
|
f 125 120 121
|
||||||
|
f 125 121 126
|
||||||
|
f 128 125 126
|
||||||
|
f 128 126 129
|
||||||
|
f 128 129 27
|
||||||
|
f 128 27 26
|
||||||
|
f 130 127 95
|
||||||
|
f 130 95 100
|
||||||
|
f 6 130 100
|
||||||
|
f 6 100 7
|
||||||
|
f 5 6 7
|
||||||
|
f 5 7 8
|
||||||
|
f 24 5 8
|
||||||
|
f 24 8 25
|
||||||
|
f 30 24 25
|
||||||
|
f 106 107 108
|
||||||
|
f 106 108 109
|
||||||
|
f 115 106 109
|
||||||
|
f 115 109 116
|
||||||
|
f 76 77 78
|
||||||
|
f 76 78 79
|
||||||
|
f 91 97 92
|
||||||
|
f 89 91 92
|
||||||
|
f 96 98 99
|
||||||
|
f 96 99 97
|
||||||
|
f 165 136 179
|
||||||
|
f 165 179 166
|
||||||
|
f 168 167 178
|
||||||
|
f 168 178 177
|
||||||
|
f 169 168 177
|
||||||
|
f 169 177 65
|
||||||
|
f 170 169 65
|
||||||
|
f 170 65 64
|
||||||
|
f 66 170 64
|
||||||
|
f 66 57 170
|
||||||
|
f 58 57 66
|
||||||
|
f 57 58 59
|
||||||
|
f 163 180 164
|
||||||
|
f 164 180 136
|
||||||
|
f 163 181 180
|
||||||
|
f 162 181 163
|
||||||
|
f 162 182 181
|
||||||
|
f 175 183 135
|
||||||
|
f 175 135 138
|
||||||
|
f 175 138 176
|
||||||
|
f 107 176 138
|
||||||
|
f 161 183 182
|
||||||
|
f 161 182 162
|
||||||
|
f 161 135 183
|
||||||
|
f 98 59 58
|
||||||
|
f 167 166 179
|
||||||
|
f 164 136 165
|
||||||
|
f 167 179 178
|
||||||
|
f 98 58 99
|
||||||
|
f 87 89 90
|
||||||
|
f 87 90 88
|
||||||
|
f 84 87 88
|
||||||
|
f 84 88 85
|
||||||
|
f 81 84 85
|
||||||
|
f 81 85 82
|
||||||
|
f 78 81 82
|
||||||
|
f 91 96 97
|
||||||
|
f 89 92 90
|
||||||
|
f 36 76 103
|
||||||
|
f 78 82 79
|
||||||
|
f 108 107 138
|
||||||
|
f 123 93 94
|
||||||
|
f 127 123 94
|
||||||
|
f 123 119 93
|
||||||
|
f 119 113 93
|
||||||
|
f 119 112 113
|
||||||
|
f 112 105 113
|
||||||
|
f 104 102 105
|
||||||
|
f 104 101 102
|
||||||
|
f 102 101 37
|
||||||
|
f 38 37 101
|
||||||
|
f 37 38 39
|
||||||
|
f 37 39 40
|
||||||
|
f 45 42 41
|
||||||
|
f 41 42 43
|
||||||
|
f 43 42 157
|
||||||
|
f 43 157 156
|
||||||
|
f 43 156 145
|
||||||
|
f 143 154 142
|
||||||
|
f 142 154 152
|
||||||
|
f 142 152 144
|
||||||
|
f 144 152 146
|
||||||
|
f 172 139 140
|
||||||
|
f 172 140 173
|
||||||
|
f 39 49 48
|
||||||
|
f 48 49 46
|
||||||
|
f 146 153 160
|
||||||
|
f 146 160 148
|
||||||
|
f 148 160 159
|
||||||
|
f 148 159 147
|
||||||
|
f 147 158 149
|
||||||
|
f 149 158 133
|
||||||
|
f 134 133 158
|
||||||
|
f 13 132 14
|
||||||
|
f 10 13 14
|
||||||
|
f 133 132 131
|
||||||
|
f 9 10 11
|
||||||
|
f 9 11 12
|
||||||
|
f 151 9 12
|
||||||
|
f 151 12 184
|
||||||
|
f 151 184 174
|
||||||
|
f 150 151 174
|
||||||
|
f 140 150 174
|
||||||
|
f 13 131 132
|
||||||
|
f 10 14 11
|
||||||
|
f 133 134 132
|
||||||
|
f 147 159 158
|
||||||
|
f 140 174 173
|
||||||
|
f 171 139 172
|
||||||
|
f 171 137 139
|
||||||
|
f 29 137 171
|
||||||
|
f 29 28 137
|
||||||
|
f 26 28 29
|
||||||
|
f 146 152 153
|
||||||
|
f 143 155 154
|
||||||
|
f 145 155 143
|
||||||
|
f 145 156 155
|
||||||
|
f 45 46 42
|
||||||
|
f 48 46 45
|
||||||
|
f 39 48 40
|
||||||
|
f 112 104 105
|
||||||
|
f 127 94 95
|
||||||
|
f 26 27 28
|
||||||
|
f 120 115 116
|
||||||
|
f 36 77 76
|
||||||
|
f 30 25 31
|
||||||
|
f 51 52 53
|
||||||
|
f 70 69 74
|
||||||
|
f 62 71 63
|
||||||
|
f 103 50 36
|
||||||
|
f 86 34 111
|
||||||
|
f 2 44 3
|
||||||
|
|
||||||
|
vt -0.000000 0.964465
|
||||||
|
vt 0.000000 0.106167
|
||||||
|
vt 0.961764 1.000000
|
||||||
|
vt 0.000500 0.100387
|
||||||
|
vt 0.001944 0.094911
|
||||||
|
vt 0.004256 0.089810
|
||||||
|
vt 0.007360 0.085152
|
||||||
|
vt 0.011176 0.081019
|
||||||
|
vt 0.015628 0.077472
|
||||||
|
vt 0.020636 0.074587
|
||||||
|
vt 0.026124 0.072439
|
||||||
|
vt 0.032020 0.071097
|
||||||
|
vt 0.038236 0.070632
|
||||||
|
vt 0.176304 0.070632
|
||||||
|
vt 0.204000 0.081784
|
||||||
|
vt 0.179508 0.070372
|
||||||
|
vt 0.182544 0.069621
|
||||||
|
vt 0.185372 0.068424
|
||||||
|
vt 0.187952 0.066833
|
||||||
|
vt 0.190244 0.064888
|
||||||
|
vt 0.192208 0.062643
|
||||||
|
vt 0.193808 0.060138
|
||||||
|
vt 0.195000 0.057420
|
||||||
|
vt 0.195744 0.054539
|
||||||
|
vt 0.196000 0.051543
|
||||||
|
vt 0.204000 0.007435
|
||||||
|
vt 0.196000 0.021606
|
||||||
|
vt 0.196304 0.018093
|
||||||
|
vt 0.197180 0.014762
|
||||||
|
vt 0.198588 0.011662
|
||||||
|
vt 0.200476 0.008829
|
||||||
|
vt 0.202796 0.006316
|
||||||
|
vt 0.205500 0.004160
|
||||||
|
vt 0.208548 0.002405
|
||||||
|
vt 0.211884 0.001097
|
||||||
|
vt 0.215468 0.000283
|
||||||
|
vt 0.219248 0.000000
|
||||||
|
vt 0.792000 0.007435
|
||||||
|
vt 0.780752 0.000000
|
||||||
|
vt 0.784536 0.000283
|
||||||
|
vt 0.788116 0.001097
|
||||||
|
vt 0.791456 0.002405
|
||||||
|
vt 0.794500 0.004160
|
||||||
|
vt 0.797208 0.006316
|
||||||
|
vt 0.799528 0.008829
|
||||||
|
vt 0.801412 0.011662
|
||||||
|
vt 0.802820 0.014762
|
||||||
|
vt 0.803696 0.018093
|
||||||
|
vt 0.804000 0.021606
|
||||||
|
vt 0.804000 0.052041
|
||||||
|
vt 0.792000 0.081784
|
||||||
|
vt 0.967984 0.999535
|
||||||
|
vt 0.814628 0.068305
|
||||||
|
vt 0.812048 0.066818
|
||||||
|
vt 0.809756 0.064993
|
||||||
|
vt 0.807788 0.062863
|
||||||
|
vt 0.806192 0.060465
|
||||||
|
vt 0.805000 0.057837
|
||||||
|
vt 0.804256 0.055015
|
||||||
|
vt 0.817456 0.069413
|
||||||
|
vt 0.820488 0.070104
|
||||||
|
vt 0.823692 0.070342
|
||||||
|
vt 0.852092 0.070632
|
||||||
|
vt 0.852092 0.070342
|
||||||
|
vt 0.973876 0.998193
|
||||||
|
vt 0.979364 0.996045
|
||||||
|
vt 0.984376 0.993164
|
||||||
|
vt 0.988828 0.989617
|
||||||
|
vt 0.992644 0.985480
|
||||||
|
vt 0.995744 0.980822
|
||||||
|
vt 0.998056 0.975721
|
||||||
|
vt 0.999500 0.970245
|
||||||
|
vt 1.000000 0.964465
|
||||||
|
vt 1.000000 0.106167
|
||||||
|
vt 0.961764 0.070632
|
||||||
|
vt 0.967984 0.071097
|
||||||
|
vt 0.973876 0.072439
|
||||||
|
vt 0.979364 0.074587
|
||||||
|
vt 0.984376 0.077472
|
||||||
|
vt 0.988828 0.081019
|
||||||
|
vt 0.992644 0.085152
|
||||||
|
vt 0.995744 0.089810
|
||||||
|
vt 0.998056 0.094911
|
||||||
|
vt 0.999500 0.100387
|
||||||
|
vt 0.038236 1.000000
|
||||||
|
vt 0.000500 0.970245
|
||||||
|
vt 0.001944 0.975721
|
||||||
|
vt 0.004256 0.980821
|
||||||
|
vt 0.007360 0.985479
|
||||||
|
vt 0.011176 0.989617
|
||||||
|
vt 0.015628 0.993164
|
||||||
|
vt 0.020636 0.996045
|
||||||
|
vt 0.026124 0.998193
|
||||||
|
vt 0.032020 0.999535
|
||||||
|
|
||||||
|
usemtl Mat_0
|
||||||
|
f 23/1 34/2 36/3
|
||||||
|
f 17/85 23/1 36/3
|
||||||
|
f 16/93 2/92 17/85
|
||||||
|
f 62/9 36/3 70/8
|
||||||
|
f 70/8 36/3 69/7
|
||||||
|
f 69/7 36/3 68/6
|
||||||
|
f 67/5 36/3 35/4
|
||||||
|
f 68/6 36/3 67/5
|
||||||
|
f 60/10 36/3 62/9
|
||||||
|
f 32/14 31/16 72/15
|
||||||
|
f 32/14 72/15 36/3
|
||||||
|
f 72/15 73/51 36/3
|
||||||
|
f 77/52 36/3 73/51
|
||||||
|
f 77/52 73/51 121/53
|
||||||
|
f 116/60 77/52 121/53
|
||||||
|
f 77/52 109/61 108/62
|
||||||
|
f 108/62 135/63 77/52
|
||||||
|
f 77/52 135/63 78/65
|
||||||
|
f 89/69 135/63 91/70
|
||||||
|
f 91/70 135/63 96/71
|
||||||
|
f 96/71 135/63 98/72
|
||||||
|
f 57/74 165/79 166/80
|
||||||
|
f 57/74 166/80 167/81
|
||||||
|
f 168/82 57/74 167/81
|
||||||
|
f 57/74 59/73 135/63
|
||||||
|
f 135/63 161/75 57/74
|
||||||
|
f 161/75 162/76 57/74
|
||||||
|
f 162/76 163/77 57/74
|
||||||
|
f 57/74 163/77 164/78
|
||||||
|
f 170/84 57/74 169/83
|
||||||
|
f 169/83 57/74 168/82
|
||||||
|
f 57/74 164/78 165/79
|
||||||
|
f 59/73 98/72 135/63
|
||||||
|
f 87/68 135/63 89/69
|
||||||
|
f 81/66 135/63 84/67
|
||||||
|
f 84/67 135/63 87/68
|
||||||
|
f 78/65 135/63 81/66
|
||||||
|
f 138/64 135/63 108/62
|
||||||
|
f 25/17 8/18 72/15
|
||||||
|
f 7/19 72/15 8/18
|
||||||
|
f 7/19 100/20 72/15
|
||||||
|
f 95/21 72/15 100/20
|
||||||
|
f 95/21 94/22 72/15
|
||||||
|
f 93/23 72/15 94/22
|
||||||
|
f 105/25 72/15 113/24
|
||||||
|
f 72/15 105/25 117/26
|
||||||
|
f 102/27 117/26 105/25
|
||||||
|
f 117/26 37/28 40/29
|
||||||
|
f 117/26 40/29 48/30
|
||||||
|
f 117/26 48/30 45/31
|
||||||
|
f 41/32 117/26 45/31
|
||||||
|
f 43/33 145/34 117/26
|
||||||
|
f 145/34 143/35 117/26
|
||||||
|
f 142/36 117/26 143/35
|
||||||
|
f 146/39 141/38 144/37
|
||||||
|
f 117/26 144/37 141/38
|
||||||
|
f 141/38 73/51 117/26
|
||||||
|
f 141/38 140/50 73/51
|
||||||
|
f 139/59 73/51 140/50
|
||||||
|
f 147/41 141/38 148/40
|
||||||
|
f 149/42 141/38 147/41
|
||||||
|
f 10/46 141/38 13/45
|
||||||
|
f 131/44 13/45 141/38
|
||||||
|
f 133/43 131/44 141/38
|
||||||
|
f 9/47 141/38 10/46
|
||||||
|
f 150/49 141/38 151/48
|
||||||
|
f 151/48 141/38 9/47
|
||||||
|
f 133/43 141/38 149/42
|
||||||
|
f 137/58 28/57 73/51
|
||||||
|
f 28/57 27/56 73/51
|
||||||
|
f 139/59 137/58 73/51
|
||||||
|
f 140/50 141/38 150/49
|
||||||
|
f 146/39 148/40 141/38
|
||||||
|
f 144/37 117/26 142/36
|
||||||
|
f 43/33 117/26 41/32
|
||||||
|
f 117/26 102/27 37/28
|
||||||
|
f 93/23 113/24 72/15
|
||||||
|
f 27/56 129/55 73/51
|
||||||
|
f 129/55 126/54 73/51
|
||||||
|
f 77/52 116/60 109/61
|
||||||
|
f 126/54 121/53 73/51
|
||||||
|
f 72/15 117/26 73/51
|
||||||
|
f 25/17 72/15 31/16
|
||||||
|
f 52/13 32/14 36/3
|
||||||
|
f 53/12 52/13 36/3
|
||||||
|
f 55/11 53/12 36/3
|
||||||
|
f 55/11 36/3 60/10
|
||||||
|
f 15/94 16/93 17/85
|
||||||
|
f 34/2 35/4 36/3
|
||||||
|
f 17/85 22/86 23/1
|
||||||
|
f 17/85 21/87 22/86
|
||||||
|
f 17/85 20/88 21/87
|
||||||
|
f 17/85 19/89 20/88
|
||||||
|
f 17/85 18/90 19/89
|
||||||
|
f 17/85 1/91 18/90
|
||||||
|
f 2/92 1/91 17/85
|
||||||
|
|
||||||
|
vt 0.992640 0.085152
|
||||||
|
vt 0.038236 1.000000
|
||||||
|
vt 0.015624 0.077472
|
||||||
|
vt 0.995744 0.980822
|
||||||
|
vt 0.979364 0.996045
|
||||||
|
vt 0.967980 0.999535
|
||||||
|
vt 0.973876 0.998193
|
||||||
|
vt 0.961764 1.000000
|
||||||
|
vt 0.988824 0.989617
|
||||||
|
vt 0.992640 0.985480
|
||||||
|
vt 0.984372 0.993164
|
||||||
|
vt 1.000000 0.106167
|
||||||
|
vt 0.998056 0.094911
|
||||||
|
vt 0.995744 0.089810
|
||||||
|
vt 0.999500 0.100387
|
||||||
|
vt 0.999500 0.970245
|
||||||
|
vt 1.000000 0.964465
|
||||||
|
vt 0.998056 0.975721
|
||||||
|
vt 0.001944 0.975721
|
||||||
|
vt 0.015624 0.993164
|
||||||
|
vt 0.026124 0.998193
|
||||||
|
vt 0.032016 0.999535
|
||||||
|
vt 0.020636 0.996045
|
||||||
|
vt 0.007356 0.985479
|
||||||
|
vt 0.011172 0.989617
|
||||||
|
vt 0.004256 0.980821
|
||||||
|
vt 0.001944 0.094911
|
||||||
|
vt -0.000000 0.964465
|
||||||
|
vt 0.000500 0.970245
|
||||||
|
vt 0.000000 0.106167
|
||||||
|
vt 0.000500 0.100387
|
||||||
|
vt 0.007356 0.085152
|
||||||
|
vt 0.004256 0.089810
|
||||||
|
vt 0.011172 0.081019
|
||||||
|
vt 0.147908 0.070632
|
||||||
|
vt 0.026124 0.072439
|
||||||
|
vt 0.020636 0.074587
|
||||||
|
vt 0.032016 0.071097
|
||||||
|
vt 0.038236 0.070632
|
||||||
|
vt 0.973876 0.072439
|
||||||
|
vt 0.823696 0.070632
|
||||||
|
vt 0.176308 0.070342
|
||||||
|
vt 0.147908 0.070342
|
||||||
|
vt 0.820492 0.070372
|
||||||
|
vt 0.179512 0.070104
|
||||||
|
vt 0.817456 0.069621
|
||||||
|
vt 0.182544 0.069413
|
||||||
|
vt 0.814628 0.068424
|
||||||
|
vt 0.185372 0.068305
|
||||||
|
vt 0.812048 0.066833
|
||||||
|
vt 0.187952 0.066818
|
||||||
|
vt 0.809756 0.064889
|
||||||
|
vt 0.190244 0.064993
|
||||||
|
vt 0.807792 0.062643
|
||||||
|
vt 0.192212 0.062862
|
||||||
|
vt 0.806192 0.060138
|
||||||
|
vt 0.193808 0.060465
|
||||||
|
vt 0.805000 0.057420
|
||||||
|
vt 0.195000 0.057836
|
||||||
|
vt 0.804256 0.054539
|
||||||
|
vt 0.195744 0.055015
|
||||||
|
vt 0.794500 0.004160
|
||||||
|
vt 0.196000 0.052041
|
||||||
|
vt 0.208544 0.002405
|
||||||
|
vt 0.198588 0.011662
|
||||||
|
vt 0.202792 0.006316
|
||||||
|
vt 0.205500 0.004160
|
||||||
|
vt 0.200472 0.008829
|
||||||
|
vt 0.196304 0.018093
|
||||||
|
vt 0.196000 0.021606
|
||||||
|
vt 0.197180 0.014762
|
||||||
|
vt 0.780752 0.000000
|
||||||
|
vt 0.215464 0.000283
|
||||||
|
vt 0.211884 0.001097
|
||||||
|
vt 0.219248 0.000000
|
||||||
|
vt 0.788116 0.001097
|
||||||
|
vt 0.784532 0.000283
|
||||||
|
vt 0.791452 0.002405
|
||||||
|
vt 0.804000 0.051543
|
||||||
|
vt 0.802820 0.014762
|
||||||
|
vt 0.799524 0.008829
|
||||||
|
vt 0.797204 0.006316
|
||||||
|
vt 0.801412 0.011662
|
||||||
|
vt 0.804000 0.021606
|
||||||
|
vt 0.803696 0.018093
|
||||||
|
vt 0.967980 0.071097
|
||||||
|
vt 0.961764 0.070632
|
||||||
|
vt 0.984372 0.077472
|
||||||
|
vt 0.979364 0.074587
|
||||||
|
vt 0.988824 0.081019
|
||||||
|
|
||||||
|
usemtl Mat_0
|
||||||
|
f 3/99 44/101 47/100
|
||||||
|
f 3/99 47/100 103/96
|
||||||
|
f 118/98 3/99 103/96
|
||||||
|
f 74/95 118/98 103/96
|
||||||
|
f 74/95 103/96 136/97
|
||||||
|
f 136/97 175/129 74/95
|
||||||
|
f 175/129 56/134 74/95
|
||||||
|
f 56/134 63/182 74/95
|
||||||
|
f 63/182 71/184 74/95
|
||||||
|
f 74/95 75/108 80/107
|
||||||
|
f 74/95 80/107 86/106
|
||||||
|
f 80/107 83/109 86/106
|
||||||
|
f 33/135 51/181 54/180
|
||||||
|
f 128/147 26/149 127/148
|
||||||
|
f 128/147 127/148 130/146
|
||||||
|
f 106/139 24/140 30/138
|
||||||
|
f 107/136 106/139 30/138
|
||||||
|
f 103/96 76/116 79/115
|
||||||
|
f 103/96 79/115 85/114
|
||||||
|
f 103/96 85/114 97/113
|
||||||
|
f 85/114 90/118 97/113
|
||||||
|
f 90/118 92/120 97/113
|
||||||
|
f 97/113 99/123 58/122
|
||||||
|
f 97/113 58/122 65/121
|
||||||
|
f 97/113 65/121 136/97
|
||||||
|
f 65/121 178/126 136/97
|
||||||
|
f 178/126 179/128 136/97
|
||||||
|
f 136/97 180/131 181/130
|
||||||
|
f 181/130 182/132 175/129
|
||||||
|
f 182/132 183/133 175/129
|
||||||
|
f 175/129 176/137 107/136
|
||||||
|
f 175/129 107/136 33/135
|
||||||
|
f 64/125 65/121 66/124
|
||||||
|
f 65/121 177/127 178/126
|
||||||
|
f 58/122 66/124 65/121
|
||||||
|
f 85/114 88/119 90/118
|
||||||
|
f 79/115 82/117 85/114
|
||||||
|
f 106/139 115/141 24/140
|
||||||
|
f 115/141 5/142 24/140
|
||||||
|
f 115/141 120/143 5/142
|
||||||
|
f 120/143 6/144 5/142
|
||||||
|
f 125/145 130/146 6/144
|
||||||
|
f 39/174 38/179 101/178
|
||||||
|
f 172/155 173/157 157/156
|
||||||
|
f 172/155 157/156 112/154
|
||||||
|
f 171/153 172/155 112/154
|
||||||
|
f 157/156 104/173 112/154
|
||||||
|
f 157/156 39/174 104/173
|
||||||
|
f 157/156 46/175 39/174
|
||||||
|
f 46/175 49/177 39/174
|
||||||
|
f 173/157 158/158 157/156
|
||||||
|
f 158/158 152/166 157/156
|
||||||
|
f 152/166 155/170 157/156
|
||||||
|
f 158/158 160/167 152/166
|
||||||
|
f 160/167 153/169 152/166
|
||||||
|
f 132/160 134/161 158/158
|
||||||
|
f 11/159 132/160 158/158
|
||||||
|
f 11/159 14/162 132/160
|
||||||
|
f 173/157 174/164 184/163
|
||||||
|
f 173/157 184/163 11/159
|
||||||
|
f 184/163 12/165 11/159
|
||||||
|
f 158/158 159/168 160/167
|
||||||
|
f 173/157 11/159 158/158
|
||||||
|
f 29/151 171/153 119/152
|
||||||
|
f 26/149 29/151 123/150
|
||||||
|
f 152/166 154/171 155/170
|
||||||
|
f 155/170 156/172 157/156
|
||||||
|
f 157/156 42/176 46/175
|
||||||
|
f 39/174 101/178 104/173
|
||||||
|
f 171/153 112/154 119/152
|
||||||
|
f 29/151 119/152 123/150
|
||||||
|
f 26/149 123/150 127/148
|
||||||
|
f 125/145 128/147 130/146
|
||||||
|
f 120/143 125/145 6/144
|
||||||
|
f 107/136 30/138 33/135
|
||||||
|
f 33/135 54/180 56/134
|
||||||
|
f 56/134 61/183 63/182
|
||||||
|
f 175/129 33/135 56/134
|
||||||
|
f 136/97 181/130 175/129
|
||||||
|
f 103/96 97/113 136/97
|
||||||
|
f 74/95 86/106 118/98
|
||||||
|
f 86/106 110/110 118/98
|
||||||
|
f 118/98 124/103 3/99
|
||||||
|
f 47/100 50/102 103/96
|
||||||
|
f 86/106 111/111 110/110
|
||||||
|
f 110/110 114/112 118/98
|
||||||
|
f 118/98 122/104 124/103
|
||||||
|
f 124/103 4/105 3/99
|
||||||
|
|
12393
resources/meshes/ultimaker_sketch_platform.obj
Normal file
12393
resources/meshes/ultimaker_sketch_platform.obj
Normal file
File diff suppressed because it is too large
Load Diff
76
resources/quality/ankermake_m5c/ankermake_m5c_fast.inst.cfg
Normal file
76
resources/quality/ankermake_m5c/ankermake_m5c_fast.inst.cfg
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
[general]
|
||||||
|
definition = ankermake_m5c
|
||||||
|
name = Fast
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
global_quality = True
|
||||||
|
quality_type = fast
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = -2
|
||||||
|
|
||||||
|
[values]
|
||||||
|
acceleration_enabled = true
|
||||||
|
acceleration_infill = 5000
|
||||||
|
acceleration_layer_0 = 2500
|
||||||
|
acceleration_prime_tower = 5000
|
||||||
|
acceleration_print = 5000
|
||||||
|
acceleration_print_layer_0 = 2500
|
||||||
|
acceleration_roofing = 2500
|
||||||
|
acceleration_skirt_brim = 2500
|
||||||
|
acceleration_support = 5000
|
||||||
|
acceleration_support_bottom = 5000
|
||||||
|
acceleration_support_infill = 5000
|
||||||
|
acceleration_support_interface = 5000
|
||||||
|
acceleration_support_roof = 5000
|
||||||
|
acceleration_topbottom = 2500
|
||||||
|
acceleration_travel = 5000
|
||||||
|
acceleration_travel_layer_0 = 2500
|
||||||
|
acceleration_wall = 5000
|
||||||
|
acceleration_wall_0 = 3000
|
||||||
|
acceleration_wall_x = 5000
|
||||||
|
jerk_enabled = true
|
||||||
|
jerk_infill = 15
|
||||||
|
jerk_layer_0 = 15
|
||||||
|
jerk_prime_tower = 15
|
||||||
|
jerk_print = 15
|
||||||
|
jerk_print_layer_0 = 15
|
||||||
|
jerk_roofing = 15
|
||||||
|
jerk_skirt_brim = 15
|
||||||
|
jerk_support = 15
|
||||||
|
jerk_support_bottom = 15
|
||||||
|
jerk_support_infill = 15
|
||||||
|
jerk_support_interface = 15
|
||||||
|
jerk_support_roof = 15
|
||||||
|
jerk_topbottom = 15
|
||||||
|
jerk_travel = 15
|
||||||
|
jerk_travel_layer_0 = 15
|
||||||
|
jerk_wall = 15
|
||||||
|
jerk_wall_0 = 15
|
||||||
|
jerk_wall_x = 15
|
||||||
|
layer_height = 0.25
|
||||||
|
layer_height_0 = 0.14
|
||||||
|
skirt_brim_speed = 50
|
||||||
|
speed_equalize_flow_enabled = false
|
||||||
|
speed_equalize_flow_max = 300
|
||||||
|
speed_infill = 270
|
||||||
|
speed_layer_0 = 50
|
||||||
|
speed_prime_tower = 500
|
||||||
|
speed_print = 500
|
||||||
|
speed_print_layer_0 = 50
|
||||||
|
speed_roofing = 150
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
speed_support = 250
|
||||||
|
speed_support_bottom = 166.667
|
||||||
|
speed_support_infill = 250
|
||||||
|
speed_support_interface = 166.667
|
||||||
|
speed_support_roof = 166.667
|
||||||
|
speed_topbottom = 150
|
||||||
|
speed_travel = 500
|
||||||
|
speed_travel_layer_0 = 150
|
||||||
|
speed_wall = 250
|
||||||
|
speed_wall_0 = 150
|
||||||
|
speed_wall_x = 250
|
||||||
|
speed_z_hop = 10
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
[general]
|
||||||
|
definition = ankermake_m5c
|
||||||
|
name = Normal
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
global_quality = True
|
||||||
|
quality_type = normal
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = 0
|
||||||
|
|
||||||
|
[values]
|
||||||
|
acceleration_infill = 2500
|
||||||
|
acceleration_layer_0 = 2500
|
||||||
|
acceleration_prime_tower = 2500
|
||||||
|
acceleration_print = 2500
|
||||||
|
acceleration_print_layer_0 = 2500
|
||||||
|
acceleration_roofing = 2500
|
||||||
|
acceleration_skirt_brim = 2500
|
||||||
|
acceleration_support = 2500
|
||||||
|
acceleration_support_bottom = 2500
|
||||||
|
acceleration_support_infill = 2500
|
||||||
|
acceleration_support_interface = 2500
|
||||||
|
acceleration_support_roof = 2500
|
||||||
|
acceleration_topbottom = 2500
|
||||||
|
acceleration_travel = 2500
|
||||||
|
acceleration_travel_layer_0 = 2500
|
||||||
|
acceleration_wall = 2500
|
||||||
|
acceleration_wall_0 = 2500
|
||||||
|
acceleration_wall_x = 2500
|
||||||
|
bottom_layers = 4
|
||||||
|
infill_line_width = 0.40
|
||||||
|
initial_layer_line_width_factor = 100
|
||||||
|
jerk_enabled = true
|
||||||
|
jerk_infill = 10
|
||||||
|
jerk_layer_0 = 10
|
||||||
|
jerk_prime_tower = 10
|
||||||
|
jerk_print = 10
|
||||||
|
jerk_print_layer_0 = 10
|
||||||
|
jerk_roofing = 10
|
||||||
|
jerk_skirt_brim = 10
|
||||||
|
jerk_support = 10
|
||||||
|
jerk_support_bottom = 10
|
||||||
|
jerk_support_infill = 10
|
||||||
|
jerk_support_interface = 10
|
||||||
|
jerk_support_roof = 10
|
||||||
|
jerk_topbottom = 10
|
||||||
|
jerk_travel = 10
|
||||||
|
jerk_travel_layer_0 = 10
|
||||||
|
jerk_wall = 10
|
||||||
|
jerk_wall_0 = 8
|
||||||
|
jerk_wall_x = 8
|
||||||
|
layer_height = 0.2
|
||||||
|
layer_height_0 = 0.14
|
||||||
|
line_width = 0.40
|
||||||
|
min_wall_line_width = 0.10
|
||||||
|
prime_tower_line_width = 0.40
|
||||||
|
skin_line_width = 0.40
|
||||||
|
skirt_brim_line_width = 0.40
|
||||||
|
skirt_brim_speed = 50
|
||||||
|
speed_infill = 250
|
||||||
|
speed_layer_0 = 50
|
||||||
|
speed_prime_tower = 250
|
||||||
|
speed_print = 250
|
||||||
|
speed_print_layer_0 = 50
|
||||||
|
speed_roofing = 150
|
||||||
|
speed_support = 150
|
||||||
|
speed_support_bottom = 100
|
||||||
|
speed_support_infill = 150
|
||||||
|
speed_support_interface = 100
|
||||||
|
speed_support_roof = 100
|
||||||
|
speed_topbottom = 150
|
||||||
|
speed_travel = 250
|
||||||
|
speed_travel_layer_0 = 50
|
||||||
|
speed_wall = 150
|
||||||
|
speed_wall_0 = 150
|
||||||
|
speed_wall_x = 250
|
||||||
|
support_bottom_line_width = 0.40
|
||||||
|
support_interface_line_width = 0.40
|
||||||
|
support_line_width = 0.40
|
||||||
|
support_roof_line_width = 0.40
|
||||||
|
top_layers = 4
|
||||||
|
wall_0_extruder_nr = -1
|
||||||
|
wall_0_inset = 0
|
||||||
|
wall_0_wipe_dist = 0.20
|
||||||
|
wall_extruder_nr = -1
|
||||||
|
wall_line_count = 3
|
||||||
|
wall_line_width = 0.40
|
||||||
|
wall_line_width_0 = 0.44
|
||||||
|
wall_line_width_x = 0.40
|
||||||
|
wall_thickness = 1.24
|
||||||
|
wall_x_extruder_nr = -1
|
||||||
|
|
@ -0,0 +1,98 @@
|
|||||||
|
[general]
|
||||||
|
definition = ankermake_m5c
|
||||||
|
name = Precision
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
global_quality = True
|
||||||
|
quality_type = precision
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = 1
|
||||||
|
|
||||||
|
[values]
|
||||||
|
acceleration_enabled = true
|
||||||
|
acceleration_infill = 4000
|
||||||
|
acceleration_layer_0 = 2500
|
||||||
|
acceleration_prime_tower = 4000
|
||||||
|
acceleration_print = 4000
|
||||||
|
acceleration_print_layer_0 = 2500
|
||||||
|
acceleration_roofing = 1000
|
||||||
|
acceleration_skirt_brim = 2500
|
||||||
|
acceleration_support = 4000
|
||||||
|
acceleration_support_bottom = 4000
|
||||||
|
acceleration_support_infill = 4000
|
||||||
|
acceleration_support_interface = 4000
|
||||||
|
acceleration_support_roof = 4000
|
||||||
|
acceleration_topbottom = 2500
|
||||||
|
acceleration_travel = 4000
|
||||||
|
acceleration_travel_layer_0 = 2500
|
||||||
|
acceleration_wall = 4000
|
||||||
|
acceleration_wall_0 = 3000
|
||||||
|
acceleration_wall_x = 3000
|
||||||
|
bottom_layers = 3
|
||||||
|
infill_line_width = 0.30
|
||||||
|
initial_layer_line_width_factor = 100
|
||||||
|
jerk_enabled = true
|
||||||
|
jerk_infill = 8
|
||||||
|
jerk_layer_0 = 8
|
||||||
|
jerk_prime_tower = 8
|
||||||
|
jerk_print = 8
|
||||||
|
jerk_print_layer_0 = 8
|
||||||
|
jerk_roofing = 8
|
||||||
|
jerk_skirt_brim = 8
|
||||||
|
jerk_support = 8
|
||||||
|
jerk_support_bottom = 8
|
||||||
|
jerk_support_infill = 8
|
||||||
|
jerk_support_interface = 8
|
||||||
|
jerk_support_roof = 8
|
||||||
|
jerk_topbottom = 8
|
||||||
|
jerk_travel = 8
|
||||||
|
jerk_travel_layer_0 = 8
|
||||||
|
jerk_wall = 8
|
||||||
|
jerk_wall_0 = 8
|
||||||
|
jerk_wall_x = 8
|
||||||
|
layer_height = 0.16
|
||||||
|
layer_height_0 = 0.14
|
||||||
|
line_width = 0.40
|
||||||
|
prime_tower_line_width = 0.40
|
||||||
|
skin_line_width = 0.40
|
||||||
|
skirt_brim_line_width = 0.40
|
||||||
|
skirt_brim_speed = 50
|
||||||
|
speed_equalize_flow_enabled = false
|
||||||
|
speed_equalize_flow_max = 300
|
||||||
|
speed_infill = 250
|
||||||
|
speed_layer_0 = 150
|
||||||
|
speed_prime_tower = 250
|
||||||
|
speed_print = 500
|
||||||
|
speed_print_layer_0 = 50
|
||||||
|
speed_roofing = 50
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
speed_support = 150
|
||||||
|
speed_support_bottom = 100
|
||||||
|
speed_support_infill = 150
|
||||||
|
speed_support_interface = 100
|
||||||
|
speed_support_roof = 100
|
||||||
|
speed_topbottom = 150
|
||||||
|
speed_travel = 500
|
||||||
|
speed_travel_layer_0 = 150
|
||||||
|
speed_wall = 250
|
||||||
|
speed_wall_0 = 150
|
||||||
|
speed_wall_x = 200
|
||||||
|
speed_z_hop = 10
|
||||||
|
support_bottom_line_width = 0.40
|
||||||
|
support_interface_line_width = 0.40
|
||||||
|
support_line_width = 0.40
|
||||||
|
support_roof_line_width = 0.40
|
||||||
|
top_layers = 5
|
||||||
|
wall_0_extruder_nr = -1
|
||||||
|
wall_0_inset = 0
|
||||||
|
wall_0_wipe_dist = 0.20
|
||||||
|
wall_extruder_nr = -1
|
||||||
|
wall_line_count = 2
|
||||||
|
wall_line_width = 0.40
|
||||||
|
wall_line_width_0 = 0.40
|
||||||
|
wall_line_width_x = 0.40
|
||||||
|
wall_thickness = 0.84
|
||||||
|
wall_x_extruder_nr = -1
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
definition = ultimaker_factor4
|
||||||
|
name = Normal
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
global_quality = True
|
||||||
|
quality_type = fast
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = -1
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = =round(0.15 * material_shrinkage_percentage_z / 100, 5)
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
definition = ultimaker_sketch
|
||||||
|
name = Fast
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
material = generic_pla_175
|
||||||
|
quality_type = draft
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = -2
|
||||||
|
|
||||||
|
[values]
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
definition = ultimaker_sketch
|
||||||
|
name = Fast
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
material = generic_tough_pla_175
|
||||||
|
quality_type = draft
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = -2
|
||||||
|
|
||||||
|
[values]
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
definition = ultimaker_sketch
|
||||||
|
name = Fast
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
global_quality = True
|
||||||
|
quality_type = draft
|
||||||
|
setting_version = 23
|
||||||
|
type = quality
|
||||||
|
weight = -2
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.2
|
||||||
|
|
@ -41,6 +41,7 @@ xy_offset_layer_0
|
|||||||
hole_xy_offset
|
hole_xy_offset
|
||||||
hole_xy_offset_max_diameter
|
hole_xy_offset_max_diameter
|
||||||
z_seam_type
|
z_seam_type
|
||||||
|
z_seam_on_vertex
|
||||||
z_seam_position
|
z_seam_position
|
||||||
z_seam_x
|
z_seam_x
|
||||||
z_seam_y
|
z_seam_y
|
||||||
@ -265,6 +266,8 @@ support_type
|
|||||||
support_angle
|
support_angle
|
||||||
support_pattern
|
support_pattern
|
||||||
support_wall_count
|
support_wall_count
|
||||||
|
support_z_seam_away_from_model
|
||||||
|
support_z_seam_min_distance
|
||||||
zig_zaggify_support
|
zig_zaggify_support
|
||||||
support_connect_zigzags
|
support_connect_zigzags
|
||||||
support_infill_rate
|
support_infill_rate
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
[5.7.2]
|
||||||
|
|
||||||
|
* Bugfixes
|
||||||
|
- Fixed a bug where modifier meshes and support meshes were not loaded in the correct position, should resolve https://github.com/Ultimaker/Cura/issues/18761 (and https://github.com/5axes/SpoonAntiWarping/issues/8)
|
||||||
|
- Primeblobs were not printed for a second extruder
|
||||||
|
- Interleaved prime tower can now be printed with a raft
|
||||||
|
- Improved behaviors for start temperature for multiple extruders
|
||||||
|
- Improved preheating logic when using a raft with multiple extruders
|
||||||
|
- Enabled Raft Remove Inside Corners and Prime Tower Mode to be shipped with a material profile
|
||||||
|
|
||||||
[5.7.1]
|
[5.7.1]
|
||||||
|
|
||||||
* Introducing the UltiMaker Factor 4
|
* Introducing the UltiMaker Factor 4
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
"secondary_button": "background_1",
|
"secondary_button": "background_1",
|
||||||
"secondary_button_hover": "background_3",
|
"secondary_button_hover": "background_3",
|
||||||
"secondary_button_text": [255, 255, 255, 255],
|
"secondary_button_text": "text_secondary_button",
|
||||||
|
|
||||||
"icon": "text_default",
|
"icon": "text_default",
|
||||||
"toolbar_background": "background_1",
|
"toolbar_background": "background_1",
|
||||||
@ -69,9 +69,7 @@
|
|||||||
"main_window_header_button_text_active": "background_4",
|
"main_window_header_button_text_active": "background_4",
|
||||||
"main_window_header_background": "background_4",
|
"main_window_header_background": "background_4",
|
||||||
"main_window_header_background_gradient": "background_4",
|
"main_window_header_background_gradient": "background_4",
|
||||||
"main_window_header_button_background_hovered": [46, 46, 46, 255],
|
"main_window_header_button_background_hovered": [46, 46, 46, 255],
|
||||||
|
|
||||||
"secondary_button_text": "text_secondary_button",
|
|
||||||
|
|
||||||
"account_sync_state_icon": [255, 255, 255, 204],
|
"account_sync_state_icon": [255, 255, 255, 204],
|
||||||
|
|
||||||
|
13
resources/variants/creality/creality_k1_max_0.4.inst.cfg
Executable file
13
resources/variants/creality/creality_k1_max_0.4.inst.cfg
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = creality_k1max
|
||||||
|
name = 0.4mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 23
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.4
|
||||||
|
|
13
resources/variants/creality/creality_k1_max_0.6.inst.cfg
Executable file
13
resources/variants/creality/creality_k1_max_0.6.inst.cfg
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = creality_k1max
|
||||||
|
name = 0.6mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 23
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.6
|
||||||
|
|
13
resources/variants/creality/creality_k1_max_0.8.inst.cfg
Executable file
13
resources/variants/creality/creality_k1_max_0.8.inst.cfg
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
[general]
|
||||||
|
definition = creality_k1max
|
||||||
|
name = 0.8mm Nozzle
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
setting_version = 23
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_size = 0.8
|
||||||
|
|
15
resources/variants/ultimaker_sketch_0.4mm.inst.cfg
Normal file
15
resources/variants/ultimaker_sketch_0.4mm.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
definition = ultimaker_sketch
|
||||||
|
name = 0.4mm
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
hardware_type = nozzle
|
||||||
|
reference_extruder_id = sketch_extruder
|
||||||
|
setting_version = 23
|
||||||
|
type = variant
|
||||||
|
|
||||||
|
[values]
|
||||||
|
machine_nozzle_id = 0.4mm
|
||||||
|
machine_nozzle_size = 0.4
|
||||||
|
|
38
scripts/extract_changelog.py
Normal file
38
scripts/extract_changelog.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description = 'Extract the changelog to be inserted to the release description')
|
||||||
|
parser.add_argument('--changelog', type = str, help = 'Path to the changelog file', required = True)
|
||||||
|
parser.add_argument('--version', type = str, help = 'Cura version to be extracted', required = True)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# In the changelog we usually omit the patch number for minor release (i.e. 5.7.0 => 5.7)
|
||||||
|
if args.version.endswith('.0'):
|
||||||
|
args.version = args.version[:-2]
|
||||||
|
|
||||||
|
start_token = f"[{args.version}]"
|
||||||
|
pattern_stop_log = "\[\d+(\.\d+){1,2}\]"
|
||||||
|
log_line = False
|
||||||
|
first_chapter = True
|
||||||
|
|
||||||
|
with open(args.changelog, "r") as changelog_file:
|
||||||
|
for line in changelog_file.readlines():
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
if log_line:
|
||||||
|
if re.match(pattern_stop_log, line):
|
||||||
|
log_line = False
|
||||||
|
elif len(line) > 0:
|
||||||
|
if line.startswith('*'):
|
||||||
|
if not first_chapter:
|
||||||
|
print("")
|
||||||
|
first_chapter = False
|
||||||
|
|
||||||
|
line = line[1:].strip()
|
||||||
|
print(f"<H2>{line}</H2>\n")
|
||||||
|
else:
|
||||||
|
print(line)
|
||||||
|
elif line == start_token:
|
||||||
|
log_line = True
|
Loading…
x
Reference in New Issue
Block a user