Merge remote-tracking branch 'origin/main' into PP-371-Prevent-wrong-temperature-with-support-materials

This commit is contained in:
Erwan MATHIEU 2024-07-02 08:41:29 +02:00
commit 2e0bc8c377
119 changed files with 1003 additions and 12902 deletions

View File

@ -30,6 +30,29 @@ on:
required: true
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:
# Daily at 4:15 CET (main-branch) and 5:15 CET (release-branch)
- cron: '15 3 * * *'
@ -70,7 +93,7 @@ jobs:
enterprise: ${{ github.event.inputs.enterprise == 'true' }}
staging: ${{ github.event.inputs.staging == 'true' }}
architecture: X64
operating_system: ubuntu-22.04
operating_system: self-hosted-Ubuntu22-X64
secrets: inherit
macos-installer:
@ -109,7 +132,7 @@ jobs:
fetch-depth: 1
- name: Download the run info
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: linux-run-info
@ -151,13 +174,13 @@ jobs:
f.writelines(f"NIGHTLY_TIME={nightly_creation_time}\n")
- name: Download linux installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.LINUX }}-AppImage
path: installers
- name: Download linux installer jobs asc artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.LINUX }}-asc
path: installers
@ -175,13 +198,13 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Download win msi installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.WIN_MSI }}-msi
path: installers
- name: Download win exe installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.WIN_EXE }}-exe
path: installers
@ -199,13 +222,13 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Download MacOS (X64) dmg installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.MAC_X64_DMG }}-dmg
path: installers
- name: Download MacOS (X64) pkg installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.MAC_X64_PKG }}-pkg
path: installers
@ -223,13 +246,13 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Download MacOS (ARM-64) dmg installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.MAC_ARM_DMG }}-dmg
path: installers
- name: Download MacOS (ARM-64) pkg installer jobs artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: ${{ steps.filename.outputs.MAC_ARM_PKG }}-pkg
path: installers

View File

@ -34,10 +34,11 @@ on:
operating_system:
description: 'OS'
required: true
default: 'ubuntu-22.04'
default: 'self-hosted-Ubuntu22-X64'
type: choice
options:
- ubuntu-22.04
- self-hosted-Ubuntu22-X64
jobs:
linux-installer:
@ -49,4 +50,4 @@ jobs:
staging: ${{ inputs.staging }}
architecture: ${{ inputs.architecture }}
operating_system: ${{ inputs.operating_system }}
secrets: inherit
secrets: inherit

View File

@ -40,7 +40,6 @@ on:
options:
- self-hosted-X64
- self-hosted-ARM64
- macos-11
- macos-12
jobs:
@ -53,4 +52,4 @@ jobs:
staging: ${{ inputs.staging }}
architecture: ${{ inputs.architecture }}
operating_system: ${{ inputs.operating_system }}
secrets: inherit
secrets: inherit

View File

@ -53,7 +53,7 @@ jobs:
run: |
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.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
with:

View File

@ -5,92 +5,107 @@ on:
workflows: ["printer-linter-pr-diagnose"]
types: [completed]
permissions:
issues: write
jobs:
clang-tidy-results:
printer-linter-result:
# 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' }}
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Download analysis results
uses: actions/github-script@v3.1.0
uses: actions/github-script@v7
with:
script: |
let artifacts = await github.actions.listWorkflowRunArtifacts({
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
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"
})[0];
let download = await github.actions.downloadArtifact({
const download = await github.rest.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: 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));
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 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
if: env.commentFileExists == 'true'
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ env.pr_id }}
issue-number: ${{ env.PR_ID }}
body-path: 'printer-linter-result/comment.md'
- name: Run clang-tidy-pr-comments action
uses: platisd/clang-tidy-pr-comments@bc0bb7da034a8317d54e7fe1e819159002f4cc40
uses: platisd/clang-tidy-pr-comments@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
clang_tidy_fixes: printer-linter-result/fixes.yml
pull_request_id: ${{ env.pr_id }}
pull_request_id: ${{ env.PR_ID }}
request_changes: true

View 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

View 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 }}

View File

@ -50,4 +50,4 @@ jobs:
staging: ${{ inputs.staging }}
architecture: ${{ inputs.architecture }}
operating_system: ${{ inputs.operating_system }}
secrets: inherit
secrets: inherit

View File

@ -2,6 +2,7 @@ checks:
diagnostic-mesh-file-extension: true
diagnostic-mesh-file-size: true
diagnostic-definition-redundant-override: true
diagnostic-definition-experimental-setting: true
diagnostic-resources-macos-app-directory-name: true
diagnostic-incorrect-formula: true
diagnostic-resource-file-deleted: true

View File

@ -5,11 +5,10 @@ requirements:
- "curaengine/(latest)@ultimaker/testing"
- "cura_binary_data/(latest)@ultimaker/testing"
- "fdm_materials/(latest)@ultimaker/testing"
- "curaengine_plugin_gradual_flow/0.1.0-beta.3"
- "curaengine_plugin_gradual_flow/0.1.1-beta.3"
- "dulcificum/latest@ultimaker/testing"
- "pysavitar/5.3.0"
- "pynest2d/5.3.0"
- "curaengine_grpc_definitions/0.2.0"
- "native_cad_plugin/2.0.0"
requirements_internal:
- "fdm_materials/(latest)@internal/testing"

View File

@ -329,7 +329,6 @@ class CuraConan(ConanFile):
self.options["cpython"].shared = True
self.options["boost"].header_only = True
if self.settings.os == "Linux":
self.options["curaengine_grpc_definitions"].shared = True
self.options["openssl"].shared = True
if self.conf.get("user.curaengine:sentry_url", "", check_type=str) != "":
self.options["curaengine"].enable_sentry = True

View File

@ -115,15 +115,15 @@ class Account(QObject):
self._update_timer.setSingleShot(True)
self._update_timer.timeout.connect(self.sync)
self._sync_services: Dict[str, int] = {}
"""contains entries "service_name" : SyncState"""
self.syncRequested.connect(self._updatePermissions)
self._sync_services: Dict[str, int] = {}
def initialize(self) -> None:
self._authorization_service.initialize(self._application.getPreferences())
self._authorization_service.onAuthStateChanged.connect(self._onLoginStateChanged)
self._authorization_service.onAuthenticationError.connect(self._onLoginStateChanged)
self._authorization_service.accessTokenChanged.connect(self._onAccessTokenChanged)
self._authorization_service.accessTokenChanged.connect(self._updatePermissions)
self._authorization_service.loadAuthDataFromPreferences()
@pyqtProperty(int, notify=syncStateChanged)

View File

@ -24,6 +24,10 @@ intent_translations["quick"] = {
"name": catalog.i18nc("@label", "Draft"),
"description": catalog.i18nc("@text", "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction.")
}
intent_translations["annealing"] = {
"name": catalog.i18nc("@label", "Annealing"),
"description": catalog.i18nc("@text", "The annealing profile requires post-processing in an oven after the print is finished. This profile retains the dimensional accuracy of the printed part after annealing and improves strength, stiffness, and thermal resistance.")
}
intent_translations["solid"] = {
"name": catalog.i18nc("@label", "Solid"),
"description": catalog.i18nc("@text",

View File

@ -96,7 +96,8 @@ class ThreeMFWriter(MeshWriter):
@staticmethod
def _convertUMNodeToSavitarNode(um_node,
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
:returns: Uranium Scene node.
@ -111,16 +112,20 @@ class ThreeMFWriter(MeshWriter):
savitar_node = Savitar.SceneNode()
savitar_node.setName(um_node.getName())
node_matrix = Matrix()
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:
extents = mesh_data.getExtents()
if extents is not None:
# We use a different coordinate space while writing, so flip Z and Y
center_vector = Vector(extents.center.x, extents.center.z, extents.center.y)
node_matrix.setByTranslation(center_vector)
node_matrix.multiply(um_node.getLocalTransformation())
if center_mesh:
node_matrix = Matrix()
# compensate for original center position, if object(s) is/are not around its zero position
if mesh_data is not None:
extents = mesh_data.getExtents()
if extents is not None:
# 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))
@ -147,7 +152,7 @@ class ThreeMFWriter(MeshWriter):
for key in changed_setting_keys:
savitar_node.setSetting("cura:" + key, str(stack.getProperty(key, "value")))
else:
# We want to export only the specified settings
# We want to export only the specified settings
if um_node.getName() in exported_settings:
model_exported_settings = exported_settings[um_node.getName()]
@ -283,7 +288,8 @@ class ThreeMFWriter(MeshWriter):
for root_child in node.getChildren():
savitar_node = ThreeMFWriter._convertUMNodeToSavitarNode(root_child,
transformation_matrix,
exported_model_settings)
exported_model_settings,
center_mesh = True)
if savitar_node:
savitar_scene.addSceneNode(savitar_node)
else:
@ -442,7 +448,7 @@ class ThreeMFWriter(MeshWriter):
def sceneNodesToString(scene_nodes: [SceneNode]) -> str:
savitar_scene = Savitar.Scene()
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)
parser = Savitar.ThreeMFParser()
scene_string = parser.sceneToString(savitar_scene)

View File

@ -544,7 +544,7 @@ class CuraEngineBackend(QObject, Backend):
if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder:
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"),
message_type = Message.MessageType.WARNING)
self._error_message.show()

View File

@ -146,6 +146,7 @@ class StartSliceJob(Job):
self._slice_message: Arcus.PythonMessage = slice_message
self._is_cancelled: bool = False
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
self._all_extruders_settings: Optional[Dict[str, Any]] = None
@ -153,6 +154,9 @@ class StartSliceJob(Job):
def getSliceMessage(self) -> Arcus.PythonMessage:
return self._slice_message
def getAssociatedDisabledExtruders(self) -> Optional[str]:
return self._associated_disabled_extruders
def setBuildPlate(self, build_plate_number: int) -> None:
self._build_plate_number = build_plate_number
@ -334,7 +338,7 @@ class StartSliceJob(Job):
if has_model_with_disabled_extruders:
self.setResult(StartJobResult.ObjectsWithDisabledExtruder)
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
# There are cases when there is nothing to slice. This can happen due to one at a time slicing not being

View File

@ -14,10 +14,10 @@ def getLinter(file: Path, settings: dict) -> Optional[List[Linter]]:
if not file.exists():
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)]
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"):
return [Formulas(file, settings)]
return [Directory(file, settings), Definition(file, settings), Formulas(file, settings)]

View File

@ -13,8 +13,11 @@ class Definition(Linter):
def __init__(self, file: Path, settings: dict) -> None:
super().__init__(file, settings)
self._definitions = {}
self._definition_name = None
self._experimental_settings = []
self._loadDefinitionFiles(file)
self._content = self._file.read_text()
self._loadExperimentalSettings()
self._loadBasePrinterSettings()
@property
@ -32,6 +35,10 @@ class Definition(Linter):
for check in self.checkMaterialTemperature():
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
# 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
@ -41,9 +48,8 @@ class Definition(Linter):
def checkRedefineOverride(self) -> Iterator[Diagnostic]:
""" Checks if definition file overrides its parents settings with the same value. """
definition_name = list(self._definitions.keys())[0]
definition = self._definitions[definition_name]
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
definition = self._definitions[self._definition_name]
if "overrides" in definition and self._definition_name not in ("fdmprinter", "fdmextruder"):
for key, value_dict in definition["overrides"].items():
is_redefined, child_key, child_value, parent, inherited_by= self._isDefinedInParent(key, value_dict, definition['inherits'])
if is_redefined:
@ -71,9 +77,8 @@ class Definition(Linter):
def checkMaterialTemperature(self) -> Iterator[Diagnostic]:
"""Checks if definition file has material tremperature defined within them"""
definition_name = list(self._definitions.keys())[0]
definition = self._definitions[definition_name]
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
definition = self._definitions[self._definition_name]
if "overrides" in definition and self._definition_name not in ("fdmprinter", "fdmextruder"):
for key, value_dict in definition["overrides"].items():
if "temperature" in key and "material" in key:
@ -97,6 +102,22 @@ class Definition(Linter):
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:
""" Loads definition file contents into self._definitions. Also load parent definition if it exists. """
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:
return
if self._definition_name is None:
self._definition_name = definition_name
# Load definition file into dictionary
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 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):
settings = {}
for k, v in self._definitions[self.base_def]["settings"].items():

View File

@ -51,9 +51,17 @@ class Formulas(Linter):
self._definition = {}
def getCuraSettingList(self) -> list:
settings_list = []
with open(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "resources", "definitions", "fdmprinter.def.json")) as data:
json_data = json.load(data)
return self.extractKeys(json_data)
settings_list += self.extractKeys(json_data)
with open(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..", "resources", "definitions", "fdmextruder.def.json")) as data:
json_data = json.load(data)
settings_list += self.extractKeys(json_data)
return settings_list
def extractKeys(self, json_obj, parent_key=''):
keys_with_value = []
@ -146,12 +154,13 @@ class Formulas(Linter):
available_sections = ["values"]
for section in available_sections:
options = config.options(section)
for option in options:
values ={}
values["value"] = config.get(section, option)
overrides[option] = values
file_data["overrides"]= overrides# Process the value here
if config.has_section(section):
options = config.options(section)
for option in options:
values ={}
values["value"] = config.get(section, option)
overrides[option] = values
file_data["overrides"]= overrides# Process the value here
return file_data

View File

@ -37,6 +37,6 @@ class Profile(Linter):
config = ConfigParser()
config.read([self._file])
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)
return name_of_profile, found

View File

@ -206,9 +206,9 @@ chardet==3.0.4 \
idna==2.8 \
--hash=sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 \
--hash=sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c
attrs==21.2.0 \
--hash=sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1 \
--hash=sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb
attrs==21.3.0 \
--hash=sha256:8f7335278dedd26b58c38e006338242cc0977f06d51579b2b8b87b9b33bff66c \
--hash=sha256:50f3c9b216dc9021042f71b392859a773b904ce1a029077f58f6598272432045
requests==2.22.0 \
--hash=sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 \
--hash=sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31
@ -222,9 +222,9 @@ constantly==15.1.0 \
hyperlink==21.0.0 \
--hash=sha256:427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b \
--hash=sha256:e6b14c37ecb73e89c77d78cdb4c2cc8f3fb59a885c5b3f819ff4ed80f25af1b4
incremental==21.3.0 \
--hash=sha256:02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57 \
--hash=sha256:92014aebc6a20b78a8084cdd5645eeaa7f74b8933f70fa3ada2cfbd1e3b54321
incremental==22.10.0 \
--hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51 \
--hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0
zope.interface==5.4.0 \
--hash=sha256:0f91b5b948686659a8e28b728ff5e74b1be6bf40cb04704453617e5f1e945ef3 \
--hash=sha256:3c02411a3b62668200910090a0dff17c0b25aaa36145082a5a6adf08fa281e54 \

View File

@ -1914,6 +1914,25 @@
}
}
},
"UltimakerPPSCF": {
"package_info": {
"package_id": "UltimakerPPSCF",
"package_type": "material",
"display_name": "Ultimaker PPS-CF",
"description": "Example package for material and quality profiles for Ultimaker materials.",
"package_version": "1.0.0",
"sdk_version": "8.6.0",
"website": "https://ultimaker.com/materials/factor-series-pps-carbon-fiber/",
"author": {
"author_id": "UltimakerPackages",
"display_name": "UltiMaker",
"email": "materials@ultimaker.com",
"website": "https://ultimaker.com",
"description": "Professional 3D printing made accessible.",
"support_website": "https://support.ultimaker.com/s/article/How-to-print-with-UltiMaker-PPS-CF"
}
}
},
"ULTIMAKERBASCFMETHOD": {
"package_info": {
"package_id": "ULTIMAKERBASCFMETHOD",

1
resources/conandata.yml Normal file
View File

@ -0,0 +1 @@
version: "5.8.0-alpha.0"

View File

@ -28,8 +28,6 @@ class CuraResource(ConanFile):
self.version = self.conan_data["version"]
def export(self):
copy(self, pattern="conandata.yml", src=os.path.join(self.recipe_folder, ".."), dst=self.export_folder,
keep_path=False)
copy(self, pattern="LICENSE*", src=os.path.join(self.recipe_folder, ".."), dst=self.export_folder,
keep_path=False)
update_conandata(self, {"version": self.version})

View File

@ -0,0 +1,59 @@
{
"version": 2,
"name": "Creality Ender-3 V3 KE",
"inherits": "creality_base",
"metadata":
{
"visible": true,
"manufacturer": "Creality3D",
"file_formats": "text/x-gcode",
"platform": "creality_ender3.3mf",
"first_start_actions": [ "MachineSettingsAction" ],
"has_machine_quality": true,
"has_materials": true,
"has_variants": true,
"machine_extruder_trains": { "0": "creality_base_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": 38 },
"machine_depth": { "default_value": 220 },
"machine_end_gcode": { "default_value": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z5 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X2 Y218 F3000 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z" },
"machine_head_with_fans_polygon":
{
"default_value": [
[-20, 10],
[10, 10],
[10, -10],
[-20, -10]
]
},
"machine_heated_bed": { "default_value": true },
"machine_height": { "default_value": 240 },
"machine_max_acceleration_e": { "value": 5000 },
"machine_max_acceleration_x": { "value": 8000.0 },
"machine_max_acceleration_y": { "value": 8000.0 },
"machine_max_acceleration_z": { "value": 500.0 },
"machine_max_feedrate_e": { "value": 100 },
"machine_max_feedrate_x": { "value": 500 },
"machine_max_feedrate_y": { "value": 500 },
"machine_max_feedrate_z": { "value": 30 },
"machine_name": { "default_value": "Creality Ender-3 V3 KE" },
"machine_start_gcode": { "default_value": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X-2.0 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S{material_print_temperature_layer_0}\nG1 X-2.0 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X-1.7 Y145.0 Z0.28 F5000.0 ;Move to side a little\nG1 X-1.7 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 E-1 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0 F1800" },
"machine_width": { "default_value": 220 },
"material_print_temp_wait": { "default_value": false },
"retraction_amount": { "default_value": 0.8 },
"retraction_combing": { "value": "no_outer_surfaces" },
"retraction_combing_max_distance": { "value": 5.0 },
"retraction_extrusion_window": { "value": "retraction_amount" },
"retraction_min_travel": { "value": 2.0 },
"retraction_speed": { "default_value": 40 },
"speed_layer_0": { "value": 100 },
"speed_print": { "value": 300 }
}
}

View File

@ -1342,6 +1342,15 @@
"limit_to_extruder": "wall_0_extruder_nr",
"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":
{
"label": "Z Seam Position",
@ -5118,6 +5127,18 @@
}
}
},
"support_infill_density_multiplier_initial_layer":
{
"label": "Support Infill Density Multiplier Initial Layer",
"description": "Multiplier for the infill on the initial layers of the support. Increasing this may help for bed adhesion.",
"type": "int",
"minimum_value": "1",
"default_value": 1,
"enabled": "support_enable or support_meshes_present",
"limit_to_extruder": "support_extruder_nr_layer_0",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"support_infill_angles":
{
"label": "Support Infill Line Directions",
@ -6208,6 +6229,7 @@
"type": "bool",
"default_value": false,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"resolve": "any(extruderValues('raft_remove_inside_corners'))",
"settable_per_mesh": false,
"settable_per_extruder": false,
"children":
@ -6220,6 +6242,7 @@
"value": "raft_remove_inside_corners",
"default_value": false,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"resolve": "any(extruderValues('raft_base_remove_inside_corners'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
@ -6231,6 +6254,7 @@
"value": "raft_remove_inside_corners",
"default_value": false,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"resolve": "any(extruderValues('raft_interface_remove_inside_corners'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
@ -6242,6 +6266,7 @@
"value": "raft_remove_inside_corners",
"default_value": false,
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"resolve": "any(extruderValues('raft_surface_remove_inside_corners'))",
"settable_per_mesh": false,
"settable_per_extruder": false
}
@ -6382,6 +6407,38 @@
"settable_per_extruder": true,
"limit_to_extruder": "raft_base_extruder_nr"
},
"raft_base_infill_overlap":
{
"label": "Raft Base Infill Overlap Percentage",
"description": "The amount of overlap between the infill and the walls of the raft base, as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "%",
"type": "float",
"default_value": 0,
"minimum_value_warning": "-50",
"maximum_value_warning": "100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_base_extruder_nr",
"children":
{
"raft_base_infill_overlap_mm":
{
"label": "Raft Base Infill Overlap",
"description": "The amount of overlap between the infill and the walls of the raft base. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "mm",
"type": "float",
"default_value": 0.0,
"minimum_value_warning": "-0.5 * machine_nozzle_size",
"maximum_value_warning": "machine_nozzle_size",
"value": "raft_base_line_width * raft_base_infill_overlap / 100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_base_extruder_nr"
}
}
},
"raft_interface_layers":
{
"label": "Raft Middle Layers",
@ -6443,6 +6500,54 @@
"settable_per_extruder": true,
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_interface_z_offset":
{
"label": "Raft Interface Z Offset",
"description": "When printing the first layer of the raft interface, translate by this offset to customize the adhesion between base and interface. A negative offset should improve the adhesion.",
"unit": "mm",
"type": "float",
"default_value": 0.0,
"minimum_value_warning": "-raft_interface_thickness / 2",
"minimum_value": "-raft_interface_thickness",
"maximum_value_warning": "raft_interface_thickness / 2",
"maximum_value": "raft_interface_thickness",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_interface_layers > 0",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_interface_infill_overlap":
{
"label": "Raft Interface Infill Overlap Percentage",
"description": "The amount of overlap between the infill and the walls of the raft interface, as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "%",
"type": "float",
"default_value": 0,
"minimum_value_warning": "-50",
"maximum_value_warning": "100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_interface_extruder_nr",
"children":
{
"raft_interface_infill_overlap_mm":
{
"label": "Raft Interface Infill Overlap",
"description": "The amount of overlap between the infill and the walls of the raft interface. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "mm",
"type": "float",
"default_value": 0.0,
"minimum_value_warning": "-0.5 * machine_nozzle_size",
"maximum_value_warning": "machine_nozzle_size",
"value": "raft_interface_line_width * raft_interface_infill_overlap / 100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_interface_extruder_nr"
}
}
},
"raft_surface_layers":
{
"label": "Raft Top Layers",
@ -6504,6 +6609,22 @@
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_z_offset":
{
"label": "Raft Surface Z Offset",
"description": "When printing the first layer of the raft surface, translate by this offset to customize the adhesion between interface and surface. A negative offset should improve the adhesion.",
"unit": "mm",
"type": "float",
"default_value": 0.0,
"minimum_value_warning": "-raft_surface_thickness / 2",
"minimum_value": "-raft_surface_thickness",
"maximum_value_warning": "raft_surface_thickness / 2",
"maximum_value": "raft_surface_thickness",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_monotonic":
{
"label": "Monotonic Raft Top Surface Order",
@ -6516,6 +6637,38 @@
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr"
},
"raft_surface_infill_overlap":
{
"label": "Raft Surface Infill Overlap Percentage",
"description": "The amount of overlap between the infill and the walls of the raft surface, as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "%",
"type": "float",
"default_value": 0,
"minimum_value_warning": "-50",
"maximum_value_warning": "100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr",
"children":
{
"raft_surface_infill_overlap_mm":
{
"label": "Raft Surface Infill Overlap",
"description": "The amount of overlap between the infill and the walls of the raft surface. A slight overlap allows the walls to connect firmly to the infill.",
"unit": "mm",
"type": "float",
"default_value": 0.0,
"minimum_value_warning": "-0.5 * machine_nozzle_size",
"maximum_value_warning": "machine_nozzle_size",
"value": "raft_surface_line_width * raft_surface_infill_overlap / 100",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr"
}
}
},
"raft_wall_count":
{
"label": "Raft Wall Count",
@ -6818,6 +6971,63 @@
"limit_to_extruder": "raft_surface_extruder_nr"
}
}
},
"raft_flow":
{
"label": "Raft Flow",
"description": "The amount of material, relative to a normal extrusion line, to extrude during raft printing. Having an increased flow may improve adhesion and raft structural strength.",
"type": "float",
"unit": "%",
"default_value": 100.0,
"minimum_value": "10",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"children":
{
"raft_base_flow":
{
"label": "Raft Base Flow",
"description": "The amount of material, relative to a normal extrusion line, to extrude during raft base printing. Having an increased flow may improve adhesion and raft structural strength.",
"type": "float",
"unit": "%",
"default_value": 100.0,
"value": "raft_flow",
"minimum_value": "10",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_base_extruder_nr"
},
"raft_interface_flow":
{
"label": "Raft Interface Flow",
"description": "The amount of material, relative to a normal extrusion line, to extrude during raft interface printing. Having an increased flow may improve adhesion and raft structural strength.",
"type": "float",
"unit": "%",
"default_value": 100.0,
"value": "raft_flow",
"minimum_value": "10",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_interface_extruder_nr"
},
"raft_surface_flow":
{
"label": "Raft Surface Flow",
"description": "The amount of material, relative to a normal extrusion line, to extrude during raft surface printing. Having an increased flow may improve adhesion and raft structural strength.",
"type": "float",
"unit": "%",
"default_value": 100.0,
"value": "raft_flow",
"minimum_value": "10",
"enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "raft_surface_extruder_nr"
}
}
}
}
},
@ -6845,7 +7055,7 @@
"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>",
"type": "enum",
"resolve": "'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":
{
"normal": "Normal",
@ -8021,6 +8231,19 @@
"default_value": 90,
"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":
{
"label": "Overhanging Wall Speed",

View File

@ -80,6 +80,7 @@
"maximum_value_warning": "120",
"minimum_value": "0"
},
"material_print_temp_wait": { "value": false },
"material_print_temperature": { "minimum_value": "0" },
"material_standby_temperature":
{
@ -88,6 +89,9 @@
},
"meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" },
"meshfix_maximum_resolution": { "value": "max(speed_wall_0 / 75, 0.5)" },
"prime_tower_base_curve_magnitude": { "value": 2 },
"prime_tower_base_height": { "value": 6 },
"prime_tower_base_size": { "value": 10 },
"raft_base_speed": { "value": "raft_speed" },
"raft_base_thickness": { "value": "min(machine_nozzle_size * 0.75, 0.3)" },
"raft_interface_fan_speed": { "value": "(raft_base_fan_speed + raft_surface_fan_speed) / 2" },
@ -125,6 +129,7 @@
"support_line_distance": { "minimum_value_warning": "0 if support_structure == 'tree' else support_line_width" },
"support_tower_maximum_supported_diameter": { "value": "support_tower_diameter" },
"support_tower_roof_angle": { "value": "0 if support_interface_enable else 65" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": "1 if support_structure == 'tree' else 0" },
"support_xy_distance_overhang": { "value": "0.2" },
"support_z_distance": { "value": "0" },

View File

@ -1,259 +0,0 @@
{
"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" }
}
}

View File

@ -1,22 +0,0 @@
{
"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 }
}
}

View File

@ -12,10 +12,8 @@ type = intent
variant = AA 0.4
[values]
build_volume_temperature = 35
jerk_print = 30
material_bed_temperature = =default_material_bed_temperature + 5
material_print_temperature = =default_material_print_temperature + 15
material_print_temperature = =default_material_print_temperature + 10
speed_print = 80
wall_thickness = =line_width * 3

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
[general]
definition = ultimaker_factor4
name = Normal
version = 4
[metadata]
material = generic_bam
quality_type = fast
setting_version = 23
type = quality
variant = AA 0.4
weight = -1
[values]
_plugin__curaenginegradualflow__0_1_0__gradual_flow_discretisation_step_size = 0.1
_plugin__curaenginegradualflow__0_1_0__gradual_flow_enabled = True
_plugin__curaenginegradualflow__0_1_0__max_flow_acceleration = 1
brim_replaces_support = False
machine_nozzle_heat_up_speed = 1.56
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100
skin_material_flow = =material_flow * 0.965
speed_print = 60
support_angle = 45
support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height
support_interface_density = =min(extruderValues('material_surface_energy'))
support_interface_enable = True
support_join_distance = 5
support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height

View File

@ -0,0 +1,28 @@
[general]
definition = ultimaker_factor4
name = Normal
version = 4
[metadata]
material = generic_pva
quality_type = fast
setting_version = 23
type = quality
variant = BB 0.4
weight = -1
[values]
_plugin__curaenginegradualflow__0_1_0__gradual_flow_discretisation_step_size = 0.1
_plugin__curaenginegradualflow__0_1_0__gradual_flow_enabled = True
_plugin__curaenginegradualflow__0_1_0__max_flow_acceleration = 1
acceleration_support_bottom = 100
acceleration_support_interface = 1500
brim_replaces_support = False
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
speed_print = 50
support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height
support_interface_offset = 1
support_offset = 3
support_z_distance = 0

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
speed_print = 50

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
speed_print = 50

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
speed_print = 40

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height

View File

@ -20,6 +20,8 @@ acceleration_support_interface = 1500
brim_replaces_support = False
build_volume_temperature = =40 if extruders_enabled_count > 1 else 35
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
prime_tower_min_volume = 15
skin_material_flow = =material_flow * 0.93
support_infill_sparse_thickness = =min(layer_height * 2, machine_nozzle_size * 3 / 4) if layer_height <= 0.15 / 0.4 * machine_nozzle_size else layer_height

View File

@ -41,7 +41,6 @@ machine_nozzle_cool_down_speed = 1.3
machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -15,7 +15,6 @@ weight = 1
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50

View File

@ -14,7 +14,6 @@ weight = -1
[values]
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 70

View File

@ -14,7 +14,6 @@ weight = 0
[values]
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
support_bottom_distance = =support_z_distance

View File

@ -18,7 +18,6 @@ infill_sparse_density = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_topbottom = =math.ceil(speed_print * 40 / 70)

View File

@ -22,7 +22,6 @@ infill_sparse_density = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50

View File

@ -42,7 +42,6 @@ machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -43,7 +43,6 @@ material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -42,7 +42,6 @@ machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -45,7 +45,6 @@ material_max_flowrate = 12
material_print_temperature = =default_material_print_temperature + 5
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -44,7 +44,6 @@ material_max_flowrate = 12
material_print_temperature = =default_material_print_temperature + 10
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
speed_infill = =math.ceil(speed_print * 35 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)

View File

@ -47,7 +47,6 @@ material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 10
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -44,7 +44,6 @@ material_flow = 93
material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 10
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -44,7 +44,6 @@ material_flow = 93
material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 15
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -12,14 +12,18 @@ variant = BB 0.4
weight = 1
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =3 * layer_height
support_interface_enable = True

View File

@ -12,13 +12,17 @@ variant = BB 0.4
weight = -1
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
prime_tower_enable = False
initial_layer_line_width_factor = 150
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =2 * layer_height
support_interface_enable = True

View File

@ -12,14 +12,18 @@ variant = BB 0.4
weight = 0
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =2 * layer_height
support_interface_enable = True

View File

@ -12,13 +12,17 @@ variant = BB 0.4
weight = -2
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -13,13 +13,18 @@ variant = BB 0.4
weight = -3
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = 0.3
support_interface_enable = True

View File

@ -12,11 +12,16 @@ variant = BB 0.8
weight = -2
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -12,13 +12,18 @@ variant = BB 0.8
weight = -3
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = 0.3
support_interface_enable = True

View File

@ -12,12 +12,17 @@ variant = BB 0.8
weight = -4
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -41,7 +41,6 @@ machine_nozzle_cool_down_speed = 1.3
machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -15,7 +15,6 @@ weight = 1
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50

View File

@ -14,7 +14,6 @@ weight = -1
[values]
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 70

View File

@ -14,7 +14,6 @@ weight = 0
[values]
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
support_bottom_distance = =support_z_distance

View File

@ -18,7 +18,6 @@ infill_sparse_density = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_topbottom = =math.ceil(speed_print * 40 / 70)

View File

@ -22,7 +22,6 @@ infill_sparse_density = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = False
raft_airgap = 0.25
retraction_prime_speed = =retraction_speed
speed_print = 50

View File

@ -42,7 +42,6 @@ machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -43,7 +43,6 @@ material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -42,7 +42,6 @@ machine_nozzle_heat_up_speed = 1.9
material_extrusion_cool_down_speed = 0.7
material_max_flowrate = 12
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -45,7 +45,6 @@ material_max_flowrate = 12
material_print_temperature = =default_material_print_temperature + 5
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -44,7 +44,6 @@ material_max_flowrate = 12
material_print_temperature = =default_material_print_temperature + 10
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = False
raft_airgap = 0.25
retraction_amount = 6.5
retraction_prime_speed = =retraction_speed

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
speed_infill = =math.ceil(speed_print * 35 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)

View File

@ -47,7 +47,6 @@ material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 10
meshfix_maximum_resolution = 0.7
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -44,7 +44,6 @@ material_flow = 93
material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 10
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -44,7 +44,6 @@ material_flow = 93
material_max_flowrate = 15
material_print_temperature = =default_material_print_temperature + 15
optimize_wall_printing_order = False
prime_tower_enable = True
raft_airgap = 0.25
retraction_amount = 4
retraction_prime_speed = 22

View File

@ -12,14 +12,18 @@ variant = BB 0.4
weight = 1
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =3 * layer_height
support_interface_enable = True

View File

@ -12,13 +12,17 @@ variant = BB 0.4
weight = -1
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
prime_tower_enable = False
initial_layer_line_width_factor = 150
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =2 * layer_height
support_interface_enable = True

View File

@ -12,14 +12,18 @@ variant = BB 0.4
weight = 0
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = =2 * layer_height
support_interface_enable = True

View File

@ -12,13 +12,17 @@ variant = BB 0.4
weight = -2
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -13,14 +13,18 @@ variant = BB 0.4
weight = -3
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = 0.3
support_interface_enable = True

View File

@ -12,11 +12,16 @@ variant = BB 0.8
weight = -2
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -12,13 +12,18 @@ variant = BB 0.8
weight = -3
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_infill_sparse_thickness = 0.3
support_interface_enable = True

View File

@ -12,12 +12,17 @@ variant = BB 0.8
weight = -4
[values]
acceleration_prime_tower = 1500
brim_replaces_support = False
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
initial_layer_line_width_factor = 150
material_print_temperature = =default_material_print_temperature + 5
minimum_support_area = 4
retraction_count_max = 5
skirt_brim_minimal_length = =min(2000, 175 / (layer_height * line_width))
speed_prime_tower = 25
speed_support = 50
support_interface_enable = True

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

View File

@ -18,7 +18,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)
speed_wall = =math.ceil(speed_print * 40 / 45)

Some files were not shown because too many files have changed in this diff Show More