diff --git a/.github/workflows/printer-linter-format.yml b/.github/workflows/printer-linter-format.yml
index 8fb1ab4752..e5e1b5b1d6 100644
--- a/.github/workflows/printer-linter-format.yml
+++ b/.github/workflows/printer-linter-format.yml
@@ -2,16 +2,15 @@ name: printer-linter-format
on:
push:
- branches:
- - main
- - '[1-9].[0-9]'
- - '[1-9].[0-9][0-9]'
- path:
- - 'resources/**'
+ paths:
+ - 'resources/definitions/**'
+ - 'resources/extruders/**'
+ - 'resources/intent/**'
+ - 'resources/quality/**'
+ - 'resources/variants/**'
jobs:
printer-linter-format:
- if: ${{ github.repository_owner == 'Ultimaker' }}
name: Printer linter auto format
runs-on: ubuntu-latest
diff --git a/.github/workflows/printer-linter-pr-diagnose.yml b/.github/workflows/printer-linter-pr-diagnose.yml
index 881ea1df3e..0dac8ba7e7 100644
--- a/.github/workflows/printer-linter-pr-diagnose.yml
+++ b/.github/workflows/printer-linter-pr-diagnose.yml
@@ -1,59 +1,59 @@
name: printer-linter-pr-diagnose
on:
- pull_request:
- path:
- - 'resources/**'
+ pull_request:
+ path:
+ - "resources/**"
jobs:
- printer-linter-diagnose:
- name: Printer linter PR diagnose
+ printer-linter-diagnose:
+ name: Printer linter PR diagnose
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- fetch-depth: 2
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 2
- - name: Setup Python and pip
- uses: actions/setup-python@v4
- with:
- python-version: 3.11.x
- cache: 'pip'
- cache-dependency-path: .github/workflows/requirements-printer-linter.txt
+ - name: Setup Python and pip
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.11.x
+ cache: "pip"
+ cache-dependency-path: .github/workflows/requirements-printer-linter.txt
- - uses: technote-space/get-diff-action@v6
- with:
- PATTERNS: |
- resources/+(extruders|definitions)/*.def.json
- resources/+(intent|quality|variants)/**/*.inst.cfg
+ - uses: technote-space/get-diff-action@v6
+ with:
+ PATTERNS: |
+ resources/+(extruders|definitions)/*.def.json
+ resources/+(intent|quality|variants)/**/*.inst.cfg
- - name: Install Python requirements for runner
- if: env.GIT_DIFF && !env.MATCHED_FILES
- run: pip install -r .github/workflows/requirements-printer-linter.txt
+ - name: Install Python requirements for runner
+ if: env.GIT_DIFF && !env.MATCHED_FILES
+ run: pip install -r .github/workflows/requirements-printer-linter.txt
- - name: Create results directory
- run: mkdir printer-linter-result
+ - name: Create results directory
+ run: mkdir printer-linter-result
- - name: Diagnose file(s)
- if: env.GIT_DIFF && !env.MATCHED_FILES
- run: python printer-linter/src/terminal.py --diagnose --report printer-linter-result/fixes.yml ${{ env.GIT_DIFF_FILTERED }}
+ - name: Diagnose file(s)
+ if: env.GIT_DIFF && !env.MATCHED_FILES
+ run: python printer-linter/src/terminal.py --diagnose --report printer-linter-result/fixes.yml ${{ env.GIT_DIFF_FILTERED }}
- - name: Save PR metadata
- 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
+ - name: Save PR metadata
+ 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
- - uses: actions/upload-artifact@v2
- with:
- name: printer-linter-result
- path: printer-linter-result/
+ - uses: actions/upload-artifact@v2
+ with:
+ name: printer-linter-result
+ path: printer-linter-result/
- - name: Run clang-tidy-pr-comments action
- uses: platisd/clang-tidy-pr-comments@fix_suggestions_for_multiline_comments
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- clang_tidy_fixes: result.yml
- request_changes: true
+ - name: Run clang-tidy-pr-comments action
+ uses: platisd/clang-tidy-pr-comments@bc0bb7da034a8317d54e7fe1e819159002f4cc40
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ clang_tidy_fixes: result.yml
+ request_changes: true
diff --git a/.github/workflows/printer-linter-pr-post.yml b/.github/workflows/printer-linter-pr-post.yml
index 6a79714e59..81dbf96469 100644
--- a/.github/workflows/printer-linter-pr-post.yml
+++ b/.github/workflows/printer-linter-pr-post.yml
@@ -1,81 +1,81 @@
name: printer-linter-pr-post
on:
- workflow_run:
- workflows: [ "printer-linter-pr-diagnose" ]
- types: [ completed ]
+ workflow_run:
+ workflows: ["printer-linter-pr-diagnose"]
+ types: [completed]
jobs:
- clang-tidy-results:
- # 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
- steps:
- - name: Download 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));
+ clang-tidy-results:
+ # 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
+ steps:
+ - name: Download 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: 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
+ - 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
- - uses: actions/checkout@v3
- with:
- repository: ${{ env.pr_head_repo }}
- ref: ${{ env.pr_head_ref }}
- persist-credentials: false
+ - 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: 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
- run: |
- mkdir printer-linter-result
- unzip printer-linter-result.zip -d printer-linter-result
+ - name: Extract analysis results
+ run: |
+ mkdir printer-linter-result
+ unzip printer-linter-result.zip -d printer-linter-result
- - name: Run clang-tidy-pr-comments action
- uses: platisd/clang-tidy-pr-comments@fix_suggestions_for_multiline_comments
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- clang_tidy_fixes: printer-linter-result/fixes.yml
- pull_request_id: ${{ env.pr_id }}
- request_changes: true
+ - name: Run clang-tidy-pr-comments action
+ uses: platisd/clang-tidy-pr-comments@bc0bb7da034a8317d54e7fe1e819159002f4cc40
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ clang_tidy_fixes: printer-linter-result/fixes.yml
+ pull_request_id: ${{ env.pr_id }}
+ request_changes: true
diff --git a/UltiMaker-Cura.spec.jinja b/UltiMaker-Cura.spec.jinja
index 74e4fd098b..5eb01845c1 100644
--- a/UltiMaker-Cura.spec.jinja
+++ b/UltiMaker-Cura.spec.jinja
@@ -16,9 +16,9 @@ datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2]
# Add dynamic libs in the venv bin/Script Path. This is needed because we might copy some additional libs
# e.q.: OpenSSL 1.1.1l in that directory with a separate:
# `conan install openssl@1.1.1l -g deploy && cp openssl/bin/*.so cura_inst/bin`
-binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.so*")])
-binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.dll")])
-binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.dylib")])
+binaries.extend([(str(bin), ".") for bin in Path(r"{{ venv_script_path }}").glob("*.so*")])
+binaries.extend([(str(bin), ".") for bin in Path(r"{{ venv_script_path }}").glob("*.dll")])
+binaries.extend([(str(bin), ".") for bin in Path(r"{{ venv_script_path }}").glob("*.dylib")])
block_cipher = None
diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py
index f429a0de19..e465b6bb68 100755
--- a/cura/Settings/ExtruderManager.py
+++ b/cura/Settings/ExtruderManager.py
@@ -2,13 +2,15 @@
# Cura is released under the terms of the LGPLv3 or higher.
from PyQt6.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt.
+
+from UM.Application import Application
from UM.FlameProfiler import pyqtSlot
import cura.CuraApplication # To get the global container stack to find the current machine.
+from UM.Util import parseBool
from cura.Settings.GlobalStack import GlobalStack
from UM.Logger import Logger
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
-from UM.Scene.SceneNode import SceneNode
from UM.Scene.Selection import Selection
from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
from UM.Settings.ContainerRegistry import ContainerRegistry # Finding containers by ID.
@@ -45,6 +47,7 @@ class ExtruderManager(QObject):
self._selected_object_extruders = [] # type: List[Union[str, "ExtruderStack"]]
Selection.selectionChanged.connect(self.resetSelectedObjectExtruders)
+ Application.getInstance().globalContainerStackChanged.connect(self.emitGlobalStackExtrudersChanged) # When the machine is swapped we must update the active machine extruders
extrudersChanged = pyqtSignal(QVariant)
"""Signal to notify other components when the list of extruders for a machine definition changes."""
@@ -52,6 +55,21 @@ class ExtruderManager(QObject):
activeExtruderChanged = pyqtSignal()
"""Notify when the user switches the currently active extruder."""
+ def emitGlobalStackExtrudersChanged(self):
+ # HACK
+ # The emit function can't be directly connected to another signal. This wrapper function is required.
+ # The extrudersChanged signal is emitted early when changing machines. This triggers it a second time
+ # after the extruder have changed properly. This is important for any QML using ExtruderManager.extruderIds
+ # This is a hack, but other behaviour relys on the updating in this order.
+ self.extrudersChanged.emit(self._application.getGlobalContainerStack().getId())
+
+ @pyqtProperty(int, notify = extrudersChanged)
+ def enabledExtruderCount(self) -> int:
+ global_container_stack = self._application.getGlobalContainerStack()
+ if global_container_stack:
+ return len([extruder for extruder in global_container_stack.extruderList if parseBool(extruder.getMetaDataEntry("enabled", "True"))])
+ return 0
+
@pyqtProperty(str, notify = activeExtruderChanged)
def activeExtruderStackId(self) -> Optional[str]:
"""Gets the unique identifier of the currently active extruder stack.
diff --git a/cura/Settings/SimpleModeSettingsManager.py b/cura/Settings/SimpleModeSettingsManager.py
index af8707f235..7ea21ed295 100644
--- a/cura/Settings/SimpleModeSettingsManager.py
+++ b/cura/Settings/SimpleModeSettingsManager.py
@@ -42,21 +42,8 @@ class SimpleModeSettingsManager(QObject):
for extruder_stack in global_stack.extruderList:
user_setting_keys.update(extruder_stack.userChanges.getAllKeys())
- # remove settings that are visible in recommended (we don't show the reset button for those)
- for skip_key in self.__ignored_custom_setting_keys:
- if skip_key in user_setting_keys:
- user_setting_keys.remove(skip_key)
-
has_customized_user_settings = len(user_setting_keys) > 0
if has_customized_user_settings != self._is_profile_customized:
self._is_profile_customized = has_customized_user_settings
self.isProfileCustomizedChanged.emit()
-
- # These are the settings included in the Simple ("Recommended") Mode, so only when the other settings have been
- # changed, we consider it as a user customized profile in the Simple ("Recommended") Mode.
- __ignored_custom_setting_keys = ["support_enable",
- "infill_sparse_density",
- "gradual_infill_steps",
- "adhesion_type",
- "support_extruder_nr"]
diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
index 0bd57e76d8..a81bec3884 100644
--- a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
+++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml
@@ -27,7 +27,7 @@ Item
Row
{
height: parent.height
- spacing: UM.Theme.getSize("print_setup_slider_handle").width // TODO: Theme! (Should be same as extruder spacing)
+ spacing: UM.Theme.getSize("slider_handle").width // TODO: Theme! (Should be same as extruder spacing)
// This wrapper ensures that the buildplate icon is located centered
// below an extruder icon.
diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml
index 33fdb0eb38..3acaba68fc 100644
--- a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml
+++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml
@@ -23,7 +23,7 @@ Item
//So compute here the visibility of the menu items, so that we can use it for the visibility of the button.
property bool sendToTopVisible:
{
- if (printJob && printJob.state in ("queued", "error") && !isAssigned(printJob)) {
+ if (printJob && (printJob.state == "queued" || printJob.state == "error")) {
if (OutputDevice && OutputDevice.queuedPrintJobs[0] && OutputDevice.canWriteOthersPrintJobs) {
return OutputDevice.queuedPrintJobs[0].key != printJob.key;
}
@@ -246,10 +246,4 @@ Item
function close() {
popUp.close()
}
- function isAssigned(job) {
- if (!job) {
- return false;
- }
- return job.assignedPrinter ? true : false;
- }
}
diff --git a/printer-linter/README.md b/printer-linter/README.md
index fc6a9a8e29..36212d6881 100644
--- a/printer-linter/README.md
+++ b/printer-linter/README.md
@@ -3,9 +3,9 @@ Printer linter is a python package that does linting on Cura definitions files.
Running this on your definition files will get them ready for a pull request.
## Running Locally
-From the Cura root folder.
+From the Cura root folder and pointing to the relative paths of the wanted definition files:
-```python3 printer-linter/src/terminal.py "flashforge_dreamer_nx.def.json" "flashforge_base.def.json" --fix --format```
+```python3 printer-linter/src/terminal.py "resources/definitions/flashforge_dreamer_nx.def.json" "resources/definitions/flashforge_base.def.json" --fix --format```
## Developing
### Printer Linter Rules
diff --git a/printer-linter/src/printerlinter/linters/defintion.py b/printer-linter/src/printerlinter/linters/defintion.py
index b0201976be..e27d8a7679 100644
--- a/printer-linter/src/printerlinter/linters/defintion.py
+++ b/printer-linter/src/printerlinter/linters/defintion.py
@@ -41,21 +41,28 @@ class Definition(Linter):
definition = self._definitions[definition_name]
if "overrides" in definition and definition_name not in ("fdmprinter", "fdmextruder"):
for key, value_dict in definition["overrides"].items():
- is_redefined, value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
+ is_redefined, child_key, child_value, parent = self._isDefinedInParent(key, value_dict, definition['inherits'])
if is_redefined:
redefined = re.compile(r'.*(\"' + key + r'\"[\s\:\S]*?)\{[\s\S]*?\},?')
found = redefined.search(self._content)
- yield Diagnostic(
- file = self._file,
- diagnostic_name = "diagnostic-definition-redundant-override",
- message = f"Overriding {key} with the same value ({value}) as defined in parent definition: {definition['inherits']}",
- level = "Warning",
- offset = found.span(0)[0],
+ # TODO: Figure out a way to support multiline fixes in the PR review GH Action, for now suggest no fix to ensure no ill-formed json are created
+ # see: https://github.com/platisd/clang-tidy-pr-comments/issues/37
+ if len(found.group().splitlines()) > 1:
+ replacements = []
+ else:
replacements = [Replacement(
file = self._file,
offset = found.span(1)[0],
length = len(found.group()),
replacement_text = "")]
+
+ yield Diagnostic(
+ file = self._file,
+ diagnostic_name = "diagnostic-definition-redundant-override",
+ message = f"Overriding {key} with the same value ({child_key}: {child_value}) as defined in parent definition: {definition['inherits']}",
+ level = "Warning",
+ offset = found.span(0)[0],
+ replacements = replacements
)
def _loadDefinitionFiles(self, definition_file) -> None:
@@ -85,28 +92,31 @@ class Definition(Linter):
is_number = False
else:
is_number = self._definitions[self.base_def]["overrides"][key]["type"] in ("float", "int")
- for value in value_dict.values():
+ for child_key, child_value in value_dict.items():
if key in parent:
- check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None]
+ if child_key in ("default_value", "value"):
+ check_values = [cv for cv in [parent[key].get("default_value", None), parent[key].get("value", None)] if cv is not None]
+ else:
+ check_values = [parent[key].get(child_key, None)]
for check_value in check_values:
- if is_number:
+ if is_number and child_key in ("default_value", "value"):
try:
- v = str(float(value))
+ v = str(float(child_value))
except:
- v = value
+ v = child_value
try:
cv = str(float(check_value))
except:
cv = check_value
else:
- v = value
+ v = child_value
cv = check_value
if v == cv:
- return True, value, parent
+ return True, child_key, child_value, parent
if "inherits" in parent:
return self._isDefinedInParent(key, value_dict, parent["inherits"])
- return False, None, None
+ return False, None, None, None
def _loadBasePrinterSettings(self):
""" TODO @Jelle please explain why this """
diff --git a/printer-linter/src/terminal.py b/printer-linter/src/terminal.py
index 6e6d1af4e5..e06ccb5e9a 100644
--- a/printer-linter/src/terminal.py
+++ b/printer-linter/src/terminal.py
@@ -1,5 +1,6 @@
from argparse import ArgumentParser
from os import getcwd
+from os import path
from pathlib import Path
from typing import List
@@ -41,6 +42,11 @@ def main() -> None:
full_body_check = {"Diagnostics": []}
+ for file in files:
+ if not path.exists(file):
+ print(f"Can't find the file: {file}")
+ return
+
if to_fix or to_diagnose:
for file in files:
diagnostics = diagnoseIssuesWithFile(file, settings)
diff --git a/resources/definitions/Geeetech_Base_Dual_Extruder.def.json b/resources/definitions/Geeetech_Base_Dual_Extruder.def.json
new file mode 100644
index 0000000000..92dc13d7a9
--- /dev/null
+++ b/resources/definitions/Geeetech_Base_Dual_Extruder.def.json
@@ -0,0 +1,148 @@
+{
+ "version": 2,
+ "name": "Geeetech Base Dual-Extruder Printer",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": false,
+ "author": "Teddy.Hu",
+ "manufacturer": "Geeetech",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": [ "MachineSettingsAction" ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": false,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "generic_pla",
+ "preferred_quality_type": "standard",
+ "preferred_variant_name": "0.4mm Nozzle",
+ "quality_definition": "Geeetech_Base_Single_Extruder",
+ "variants_name": "Nozzle Size"
+ },
+ "overrides":
+ {
+ "acceleration_print": { "value": 500 },
+ "acceleration_travel": { "value": 500 },
+ "acceleration_travel_layer_0": { "value": "acceleration_travel" },
+ "adhesion_type": { "value": "'skirt'" },
+ "brim_replaces_support": { "value": false },
+ "cool_min_layer_time": { "value": "1.3 if speed_infill>=200 else 5" },
+ "gantry_height": { "value": 40 },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'grid'" },
+ "line_width": { "value": "1.125*machine_nozzle_size if speed_infill<=100 else machine_nozzle_size" },
+ "machine_acceleration": { "value": 500 },
+ "machine_depth": { "default_value": 350 },
+ "machine_end_gcode": { "default_value": ";Geeetech Custom end G-code\nG91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers\n\n\n" },
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-40, 40],
+ [40, 40],
+ [40, -40],
+ [-40, -40]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 350 },
+ "machine_max_acceleration_e": { "value": 1000 },
+ "machine_max_acceleration_x": { "value": 500 },
+ "machine_max_acceleration_y": { "value": 500 },
+ "machine_max_acceleration_z": { "value": 111 },
+ "machine_max_feedrate_e": { "value": 40 },
+ "machine_max_feedrate_x": { "value": 500 },
+ "machine_max_feedrate_y": { "value": 500 },
+ "machine_max_feedrate_z": { "value": 10 },
+ "machine_max_jerk_e": { "value": 4.9 },
+ "machine_max_jerk_xy": { "value": 10 },
+ "machine_max_jerk_z": { "value": 0.3 },
+ "machine_name": { "default_value": "Geeetech Base Dual-Extruder Printer" },
+ "machine_start_gcode": { "default_value": ";Geeetech Custom Start G-code\nM104 S{material_print_temperature_layer_0} ;Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ;Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ;Wait for Hotend Temperature\nG92 E0 ;Reset Extruder\nG28 ;Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ;ON Light\n;M106 P0 S383 ;ON MainFan 150% if need\n;M106 P1 S255 ;ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ;Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ;Draw the first line\nG92 E0 ;Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ;Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ;Scrape off nozzle residue" },
+ "machine_width": { "default_value": 350 },
+ "material_bed_temperature": { "maximum_value_warning": 110 },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_initial_print_temperature":
+ {
+ "minimum_value_warning": "material_standby_temperature - 10",
+ "value": "material_print_temperature - 5"
+ },
+ "material_print_temperature":
+ {
+ "maximum_value": "250",
+ "value": "200 if speed_infill <=100 else 210 if speed_infill <= 150 else 220 if speed_infill <= 180 else 230"
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value_warning": 250,
+ "value": "material_print_temperature + 5"
+ },
+ "minimum_interface_area": { "value": 10 },
+ "minimum_support_area": { "value": 2 },
+ "optimize_wall_printing_order": { "value": true },
+ "prime_tower_brim_enable": { "value": true },
+ "prime_tower_min_volume":
+ {
+ "maximum_value_warning": 150,
+ "value": 85
+ },
+ "prime_tower_size": { "value": 30 },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'all'" },
+ "retraction_combing_max_distance": { "value": 30 },
+ "retraction_hop": { "value": 0.5 },
+ "retraction_speed": { "value": 35 },
+ "skirt_brim_speed":
+ {
+ "maximum_value_warning": "60",
+ "value": "speed_print_layer_0"
+ },
+ "skirt_gap": { "value": 6 },
+ "small_hole_max_size": { "value": "5 if speed_infill>=150 else 0" },
+ "speed_layer_0":
+ {
+ "maximum_value_warning": "100",
+ "value": "50 if speed_infill <= 150 else 75"
+ },
+ "speed_print_layer_0":
+ {
+ "maximum_value_warning": "60",
+ "value": "25 if speed_infill <= 150 else 35"
+ },
+ "speed_support": { "value": "speed_print*0.5" },
+ "speed_support_bottom": { "value": "speed_support_roof" },
+ "speed_support_interface": { "value": "speed_support / 0.8" },
+ "speed_support_roof": { "value": "speed_support_interface / 2" },
+ "speed_topbottom": { "value": "speed_print" },
+ "speed_travel": { "value": "200 if 120<=speed_print<=200 else speed_print if speed_print>200 else 120" },
+ "speed_travel_layer_0":
+ {
+ "maximum_value_warning": "150",
+ "value": "speed_layer_0"
+ },
+ "speed_wall": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "speed_wall_0": { "value": "30 if speed_print==60 else math.ceil(round(speed_print*0.75))" },
+ "speed_wall_x": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "support_brim_enable": { "value": true },
+ "support_brim_width": { "value": 5 },
+ "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
+ "support_interface_density": { "value": 33.333 },
+ "support_interface_height": { "value": "layer_height * 3" },
+ "support_interface_pattern": { "value": "zigzag" },
+ "support_interface_skip_height": { "value": 0.2 },
+ "support_pattern": { "value": "'zigzag'" },
+ "support_use_towers": { "value": false },
+ "support_wall_count": { "value": 0 },
+ "support_xy_distance": { "value": "wall_line_width_0 * 2" },
+ "support_xy_distance_overhang": { "value": "wall_line_width_0" },
+ "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
+ "top_bottom_thickness": { "value": "layer_height_0 + layer_height * 3" },
+ "travel_avoid_supports": { "value": true },
+ "wall_thickness": { "value": "line_width * 2" },
+ "wall_transition_filter_deviation": { "value": 0.15 },
+ "z_seam_corner": { "value": "'z_seam_corner_inner'" },
+ "z_seam_type": { "value": "'sharpest_corner'" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/Geeetech_Base_Multi_Extruder.def.json b/resources/definitions/Geeetech_Base_Multi_Extruder.def.json
new file mode 100644
index 0000000000..bb26709719
--- /dev/null
+++ b/resources/definitions/Geeetech_Base_Multi_Extruder.def.json
@@ -0,0 +1,149 @@
+{
+ "version": 2,
+ "name": "Geeetech Base Multi-Extruder Printer",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": false,
+ "author": "Teddy.Hu",
+ "manufacturer": "Geeetech",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": [ "MachineSettingsAction" ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": false,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Multi_Extruder_0",
+ "1": "Geeetech_Multi_Extruder_1",
+ "2": "Geeetech_Multi_Extruder_2"
+ },
+ "preferred_material": "generic_pla",
+ "preferred_quality_type": "standard",
+ "preferred_variant_name": "0.4mm Nozzle",
+ "quality_definition": "Geeetech_Base_Single_Extruder",
+ "variants_name": "Nozzle Size"
+ },
+ "overrides":
+ {
+ "acceleration_print": { "value": 500 },
+ "acceleration_travel": { "value": 500 },
+ "acceleration_travel_layer_0": { "value": "acceleration_travel" },
+ "adhesion_type": { "value": "'skirt'" },
+ "brim_replaces_support": { "value": false },
+ "cool_min_layer_time": { "value": "1.3 if speed_infill>=200 else 5" },
+ "gantry_height": { "value": 40 },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'grid'" },
+ "line_width": { "value": "1.125*machine_nozzle_size if speed_infill<=100 else machine_nozzle_size" },
+ "machine_acceleration": { "value": 500 },
+ "machine_depth": { "default_value": 350 },
+ "machine_end_gcode": { "default_value": ";Geeetech Custom end G-code\nG91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers\n\n\n" },
+ "machine_extruder_count": { "default_value": 3 },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-40, 40],
+ [40, 40],
+ [40, -40],
+ [-40, -40]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 350 },
+ "machine_max_acceleration_e": { "value": 1000 },
+ "machine_max_acceleration_x": { "value": 500 },
+ "machine_max_acceleration_y": { "value": 500 },
+ "machine_max_acceleration_z": { "value": 111 },
+ "machine_max_feedrate_e": { "value": 40 },
+ "machine_max_feedrate_x": { "value": 500 },
+ "machine_max_feedrate_y": { "value": 500 },
+ "machine_max_feedrate_z": { "value": 10 },
+ "machine_max_jerk_e": { "value": 4.9 },
+ "machine_max_jerk_xy": { "value": 10 },
+ "machine_max_jerk_z": { "value": 0.3 },
+ "machine_name": { "default_value": "Geeetech Base Multi-Extruder Printer" },
+ "machine_start_gcode": { "default_value": ";Geeetech Custom Start G-code\nM104 S{material_print_temperature_layer_0} ;Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ;Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ;Wait for Hotend Temperature\nG92 E0 ;Reset Extruder\nG28 ;Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ;ON Light\n;M106 P0 S383 ;ON MainFan 150% if need\n;M106 P1 S255 ;ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ;Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ;Draw the first line\nG92 E0 ;Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ;Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ;Scrape off nozzle residue" },
+ "machine_width": { "default_value": 350 },
+ "material_bed_temperature": { "maximum_value_warning": 110 },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_initial_print_temperature":
+ {
+ "minimum_value_warning": "material_standby_temperature - 10",
+ "value": "material_print_temperature - 5"
+ },
+ "material_print_temperature":
+ {
+ "maximum_value": "250",
+ "value": "200 if speed_infill <=100 else 210 if speed_infill <= 150 else 220 if speed_infill <= 180 else 230"
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value_warning": 250,
+ "value": "material_print_temperature + 5"
+ },
+ "minimum_interface_area": { "value": 10 },
+ "minimum_support_area": { "value": 2 },
+ "optimize_wall_printing_order": { "value": true },
+ "prime_tower_brim_enable": { "value": true },
+ "prime_tower_min_volume":
+ {
+ "maximum_value_warning": 150,
+ "value": 85
+ },
+ "prime_tower_size": { "value": 30 },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'all'" },
+ "retraction_combing_max_distance": { "value": 30 },
+ "retraction_hop": { "value": 0.5 },
+ "retraction_speed": { "value": 35 },
+ "skirt_brim_speed":
+ {
+ "maximum_value_warning": "60",
+ "value": "speed_print_layer_0"
+ },
+ "skirt_gap": { "value": 6 },
+ "small_hole_max_size": { "value": "5 if speed_infill>=150 else 0" },
+ "speed_layer_0":
+ {
+ "maximum_value_warning": "100",
+ "value": "50 if speed_infill <= 150 else 75"
+ },
+ "speed_print_layer_0":
+ {
+ "maximum_value_warning": "60",
+ "value": "25 if speed_infill <= 150 else 35"
+ },
+ "speed_support": { "value": "speed_print*0.5" },
+ "speed_support_bottom": { "value": "speed_support_roof" },
+ "speed_support_interface": { "value": "speed_support / 0.8" },
+ "speed_support_roof": { "value": "speed_support_interface / 2" },
+ "speed_topbottom": { "value": "speed_print" },
+ "speed_travel": { "value": "200 if 120<=speed_print<=200 else speed_print if speed_print>200 else 120" },
+ "speed_travel_layer_0":
+ {
+ "maximum_value_warning": "150",
+ "value": "speed_layer_0"
+ },
+ "speed_wall": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "speed_wall_0": { "value": "30 if speed_print==60 else math.ceil(round(speed_print*0.75))" },
+ "speed_wall_x": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "support_brim_enable": { "value": true },
+ "support_brim_width": { "value": 5 },
+ "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
+ "support_interface_density": { "value": 33.333 },
+ "support_interface_height": { "value": "layer_height * 3" },
+ "support_interface_pattern": { "value": "zigzag" },
+ "support_interface_skip_height": { "value": 0.2 },
+ "support_pattern": { "value": "'zigzag'" },
+ "support_use_towers": { "value": false },
+ "support_wall_count": { "value": 0 },
+ "support_xy_distance": { "value": "wall_line_width_0 * 2" },
+ "support_xy_distance_overhang": { "value": "wall_line_width_0" },
+ "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
+ "top_bottom_thickness": { "value": "layer_height_0 + layer_height * 3" },
+ "travel_avoid_supports": { "value": true },
+ "wall_thickness": { "value": "line_width * 2" },
+ "wall_transition_filter_deviation": { "value": 0.15 },
+ "z_seam_corner": { "value": "'z_seam_corner_inner'" },
+ "z_seam_type": { "value": "'sharpest_corner'" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/Geeetech_Base_Single_Extruder.def.json b/resources/definitions/Geeetech_Base_Single_Extruder.def.json
new file mode 100644
index 0000000000..5a168c0b69
--- /dev/null
+++ b/resources/definitions/Geeetech_Base_Single_Extruder.def.json
@@ -0,0 +1,136 @@
+{
+ "version": 2,
+ "name": "Geeetech Base Single Extruder Printer",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": false,
+ "author": "Teddy.Hu",
+ "manufacturer": "Geeetech",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": [ "MachineSettingsAction" ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" },
+ "preferred_material": "generic_pla",
+ "preferred_quality_type": "standard",
+ "preferred_variant_name": "0.4mm Nozzle",
+ "quality_definition": "Geeetech_Base_Single_Extruder",
+ "variants_name": "Nozzle Size"
+ },
+ "overrides":
+ {
+ "acceleration_print": { "value": 500 },
+ "acceleration_travel": { "value": 500 },
+ "acceleration_travel_layer_0": { "value": "acceleration_travel" },
+ "adhesion_type": { "value": "'skirt'" },
+ "brim_replaces_support": { "value": false },
+ "cool_min_layer_time": { "value": "1.3 if speed_infill>=200 else 5" },
+ "gantry_height": { "value": 40 },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'grid'" },
+ "line_width": { "value": "1.125*machine_nozzle_size if speed_infill<=100 else machine_nozzle_size" },
+ "machine_acceleration": { "value": 500 },
+ "machine_depth": { "default_value": 350 },
+ "machine_end_gcode": { "default_value": ";Geeetech Custom end G-code\nG91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers\n\n\n" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-40, 40],
+ [40, 40],
+ [40, -40],
+ [-40, -40]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 350 },
+ "machine_max_acceleration_e": { "value": 1000 },
+ "machine_max_acceleration_x": { "value": 500 },
+ "machine_max_acceleration_y": { "value": 500 },
+ "machine_max_acceleration_z": { "value": 111 },
+ "machine_max_feedrate_e": { "value": 40 },
+ "machine_max_feedrate_x": { "value": 500 },
+ "machine_max_feedrate_y": { "value": 500 },
+ "machine_max_feedrate_z": { "value": 10 },
+ "machine_max_jerk_e": { "value": 4.9 },
+ "machine_max_jerk_xy": { "value": 10 },
+ "machine_max_jerk_z": { "value": 0.3 },
+ "machine_name": { "default_value": "Geeetech Base Single Extruder Printer" },
+ "machine_start_gcode": { "default_value": ";Geeetech Custom Start G-code\nM104 S{material_print_temperature_layer_0} ;Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ;Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ;Wait for Hotend Temperature\nG92 E0 ;Reset Extruder\nG28 ;Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ;ON Light\n;M106 P0 S383 ;ON MainFan 150% if need\n;M106 P1 S255 ;ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ;Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ;Draw the first line\nG92 E0 ;Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ;Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ;Scrape off nozzle residue" },
+ "machine_width": { "default_value": 350 },
+ "material_bed_temperature": { "maximum_value_warning": 110 },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_initial_print_temperature":
+ {
+ "minimum_value_warning": "material_standby_temperature - 10",
+ "value": "material_print_temperature - 5"
+ },
+ "material_print_temperature":
+ {
+ "maximum_value": "250",
+ "value": "200 if speed_infill <=100 else 210 if speed_infill <= 150 else 220 if speed_infill <= 180 else 230"
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value_warning": 250,
+ "value": "material_print_temperature + 5"
+ },
+ "minimum_interface_area": { "value": 10 },
+ "minimum_support_area": { "value": 2 },
+ "optimize_wall_printing_order": { "value": true },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'all'" },
+ "retraction_combing_max_distance": { "value": 30 },
+ "retraction_hop": { "value": 0.5 },
+ "retraction_speed": { "value": 40 },
+ "skirt_brim_speed":
+ {
+ "maximum_value_warning": "60",
+ "value": "speed_print_layer_0"
+ },
+ "skirt_gap": { "value": 6 },
+ "small_hole_max_size": { "value": "5 if speed_infill>=150 else 0" },
+ "speed_layer_0":
+ {
+ "maximum_value_warning": "100",
+ "value": "50 if speed_infill <= 150 else 75"
+ },
+ "speed_print_layer_0":
+ {
+ "maximum_value_warning": "60",
+ "value": "25 if speed_infill <= 150 else 35"
+ },
+ "speed_support": { "value": "speed_print*0.5" },
+ "speed_support_bottom": { "value": "speed_support_roof" },
+ "speed_support_interface": { "value": "speed_support / 0.8" },
+ "speed_support_roof": { "value": "speed_support_interface / 2" },
+ "speed_topbottom": { "value": "speed_print" },
+ "speed_travel": { "value": "200 if 120<=speed_print<=200 else speed_print if speed_print>200 else 120" },
+ "speed_travel_layer_0":
+ {
+ "maximum_value_warning": "150",
+ "value": "speed_layer_0"
+ },
+ "speed_wall": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "speed_wall_0": { "value": "30 if speed_print==60 else math.ceil(round(speed_print*0.75))" },
+ "speed_wall_x": { "value": "60 if speed_print==60 else math.ceil(round(speed_print*0.90))" },
+ "support_brim_enable": { "value": true },
+ "support_brim_width": { "value": 5 },
+ "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
+ "support_interface_density": { "value": 33.333 },
+ "support_interface_height": { "value": "layer_height * 3" },
+ "support_interface_pattern": { "value": "zigzag" },
+ "support_interface_skip_height": { "value": 0.2 },
+ "support_pattern": { "value": "'zigzag'" },
+ "support_use_towers": { "value": false },
+ "support_wall_count": { "value": 0 },
+ "support_xy_distance": { "value": "wall_line_width_0 * 2" },
+ "support_xy_distance_overhang": { "value": "wall_line_width_0" },
+ "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },
+ "top_bottom_thickness": { "value": "layer_height_0 + layer_height * 3" },
+ "travel_avoid_supports": { "value": true },
+ "wall_thickness": { "value": "line_width * 2" },
+ "wall_transition_filter_deviation": { "value": 0.15 },
+ "z_seam_corner": { "value": "'z_seam_corner_inner'" },
+ "z_seam_type": { "value": "'sharpest_corner'" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json
index 1b7d355337..6ccc718db8 100644
--- a/resources/definitions/ankermake_m5.def.json
+++ b/resources/definitions/ankermake_m5.def.json
@@ -131,3 +131,100 @@
"small_hole_max_size": { "value": 10 }
}
}
+=======
+ "version": 2,
+ "name": "AnkerMake M5",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": true,
+ "author": "just-trey",
+ "manufacturer": "AnkerMake",
+ "file_formats": "text/x-gcode",
+ "platform": "ankermake_m5_platform.obj",
+ "has_machine_quality": true,
+ "machine_extruder_trains": { "0": "ankermake_m5_extruder_0" },
+ "platform_texture": "ankermake_m5.png",
+ "preferred_material": "generic_pla",
+ "preferred_quality_type": "normal"
+ },
+ "overrides":
+ {
+ "acceleration_print": { "value": "2500" },
+ "adhesion_type": { "default_value": "skirt" },
+ "cool_min_layer_time": { "value": 6 },
+ "cool_min_speed": { "value": 30 },
+ "gantry_height": { "value": 25 },
+ "hole_xy_offset": { "value": 0.2 },
+ "infill_pattern": { "value": "'lines' if infill_sparse_density >= 25 else 'grid'" },
+ "infill_sparse_density": { "value": 25 },
+ "machine_depth": { "default_value": 235 },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 250 },
+ "machine_name": { "default_value": "AnkerMake M5" },
+ "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": { "default_value": 235 },
+ "material_bed_temperature": { "maximum_value_warning": "110" },
+ "material_bed_temperature_layer_0": { "maximum_value_warning": "110" },
+ "material_diameter": { "default_value": 1.75 },
+ "material_final_print_temperature": { "value": "material_print_temperature" },
+ "material_flow_layer_0": { "value": 115 },
+ "material_initial_print_temperature": { "value": "material_print_temperature" },
+ "material_print_temperature": { "maximum_value_warning": "260" },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value_warning": "270",
+ "value": "material_print_temperature + 5"
+ },
+ "minimum_interface_area": { "value": 10 },
+ "minimum_support_area": { "value": 2 },
+ "retraction_amount": { "default_value": 1.5 },
+ "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'infill'" },
+ "retraction_hop": { "value": 0.2 },
+ "retraction_speed": { "default_value": 60 },
+ "skin_material_flow": { "value": 97 },
+ "skin_monotonic": { "default_value": true },
+ "skirt_line_count": { "value": 3 },
+ "small_hole_max_size": { "value": 10 },
+ "speed_infill": { "maximum_value_warning": 255 },
+ "speed_print":
+ {
+ "maximum_value_warning": 255,
+ "value": 250.0
+ },
+ "speed_support": { "maximum_value_warning": 255 },
+ "speed_support_bottom": { "maximum_value_warning": 255 },
+ "speed_support_infill": { "maximum_value_warning": 255 },
+ "speed_support_interface": { "maximum_value_warning": 255 },
+ "speed_support_roof": { "maximum_value_warning": 255 },
+ "speed_topbottom": { "value": 150.0 },
+ "speed_travel": { "value": 250.0 },
+ "speed_wall":
+ {
+ "maximum_value_warning": 255,
+ "value": 150.0
+ },
+ "speed_wall_x":
+ {
+ "maximum_value_warning": 255,
+ "value": 250.0
+ },
+ "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width / 2.0 /layer_height)))" },
+ "support_brim_width": { "value": 4.0 },
+ "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" },
+ "support_interface_density": { "value": 33.333 },
+ "support_interface_enable": { "value": true },
+ "support_interface_pattern": { "value": "'grid'" },
+ "support_interface_skip_height": { "value": 0.2 },
+ "support_roof_enable": { "value": true },
+ "support_xy_distance": { "value": "wall_line_width_0 * 2" },
+ "support_xy_distance_overhang": { "value": "wall_line_width_0" },
+ "support_xy_overrides_z": { "value": "'xy_overrides_z'" },
+ "support_z_distance": { "value": "layer_height * 2" },
+ "top_bottom_thickness": { "value": "layer_height * 4" },
+ "wall_overhang_angle": { "value": 55 },
+ "wall_overhang_speed_factor": { "value": 55 },
+ "xy_offset_layer_0": { "value": -0.2 },
+ "zig_zaggify_infill": { "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'lines'" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/creality_sermoonv1.def.json b/resources/definitions/creality_sermoonv1.def.json
index f64b91c228..d40c172f43 100644
--- a/resources/definitions/creality_sermoonv1.def.json
+++ b/resources/definitions/creality_sermoonv1.def.json
@@ -27,6 +27,8 @@
"machine_height": { "default_value": 165 },
"machine_name": { "default_value": "Creality Sermoon V1" },
"machine_start_gcode": { "default_value": "; -- START GCODE --\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y170.0 Z0.28 F1500.0 E12 ;Draw the first line\nG1 X10.4 Y170.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E25 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up" },
- "machine_width": { "default_value": 175 }
+ "machine_width": { "default_value": 175 },
+ "retraction_amount": { "value": 0.8 },
+ "retraction_speed": { "default_value": 40 }
}
}
\ No newline at end of file
diff --git a/resources/definitions/fablabbcn_pasteprinter.def.json b/resources/definitions/fablabbcn_pasteprinter.def.json
new file mode 100644
index 0000000000..bfd0725c06
--- /dev/null
+++ b/resources/definitions/fablabbcn_pasteprinter.def.json
@@ -0,0 +1,38 @@
+{
+ "version": 2,
+ "name": "PastePrinter",
+ "inherits": "fdmprinter",
+ "metadata":
+ {
+ "visible": true,
+ "author": "eduardo_chamorro",
+ "manufacturer": "FablabBcn",
+ "file_formats": "text/x-gcode",
+ "first_start_actions": [ "MachineSettingsAction" ],
+ "machine_extruder_trains": { "0": "fablabbcn_0" }
+ },
+ "overrides":
+ {
+ "adhesion_type": { "default_value": "skirt" },
+ "layer_height": { "default_value": 1.5 },
+ "layer_height_0": { "default_value": 1.5 },
+ "machine_always_write_active_tool": { "default_value": true },
+ "machine_depth": { "default_value": 235 },
+ "machine_end_gcode": { "default_value": ";FOOTER\nG91; relative positioning\nM107; turn off layer fan\nG1 Z50 F1000\nM400;Wait finish move\nG90; absolute positioning\nG1 X235 Y235\n;ENDFOOTER" },
+ "machine_height": { "default_value": 235 },
+ "machine_max_jerk_e": { "default_value": 50.0 },
+ "machine_max_jerk_xy": { "default_value": 50.0 },
+ "machine_max_jerk_z": { "default_value": 50.0 },
+ "machine_nozzle_size": { "settable_per_extruder": false },
+ "machine_start_gcode": { "default_value": ";HEADER;\nG21; Set to metric [change to G20 if you want Imperial]\nG91;Force coordinates to be absolute relative to the origin \nG1 Z10 F1000;\nG90; Force coordinates to be absolute relative to the origin\nG28 X; Home X axis\nG28 Y; Home Y axis\nG28 Z; Home Z axis\nM302 P1; Disable Cold Extrusion Checking\nG92 E0; Reset extruder to [0] zero end of cleaning run\nG91; Force coordinates to be absolute relative to the origin\nG1 Z10 F1000;\nG90;\nT0;\nM117 Printing...;ENDHEADER" },
+ "machine_width": { "default_value": 235 },
+ "material_bed_temp_prepend": { "default_value": false },
+ "material_bed_temp_wait": { "default_value": false },
+ "material_diameter": { "default_value": 1.75 },
+ "material_print_temp_prepend": { "default_value": false },
+ "material_print_temp_wait": { "default_value": false },
+ "retraction_enable": { "default_value": false },
+ "speed_print": { "default_value": 15 },
+ "top_bottom_pattern": { "default_value": "concentric" }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json
index 7522227940..7f0edb21ba 100644
--- a/resources/definitions/fdmprinter.def.json
+++ b/resources/definitions/fdmprinter.def.json
@@ -8161,6 +8161,7 @@
"small_feature_max_length":
{
"label": "Small Feature Max Length",
+ "enabled": "small_hole_max_size > 0",
"description": "Feature outlines that are shorter than this length will be printed using Small Feature Speed.",
"unit": "mm",
"type": "float",
@@ -8174,6 +8175,7 @@
"small_feature_speed_factor":
{
"label": "Small Feature Speed",
+ "enabled": "small_hole_max_size > 0",
"description": "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.",
"unit": "%",
"type": "float",
@@ -8186,6 +8188,7 @@
"small_feature_speed_factor_0":
{
"label": "Small Feature Initial Layer Speed",
+ "enabled": "small_hole_max_size > 0",
"description": "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.",
"unit": "%",
"type": "float",
diff --git a/resources/definitions/geeetech_A10.def.json b/resources/definitions/geeetech_A10.def.json
deleted file mode 100644
index 6b17223d7b..0000000000
--- a/resources/definitions/geeetech_A10.def.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "version": 2,
- "name": "Geeetech A10",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A10_1"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A10" },
- "machine_width": {
- "default_value": 220
- },
- "machine_height": {
- "default_value": 260
- },
- "machine_depth": {
- "default_value": 220
- },
- "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_heated_bed": { "default_value": true },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": "G28 ; Auto home\nG1 Z15 F300 ;Move up slightly\nM107 ;Off fans\nG90 ;Switch to absolute positioning\nM82 ;Extruder absolute mode\nG92 E0 ;Set position of extruder to 0\nG0 X10 Y20 F1500 ;Move to X10 Y20 at 1500mms\nG1 Z0.8 ;Move Z to 0.8\nG1 F300 X180 E40 ;Extrude a line of filament\nG1 F1200 Z2 ;Raise Z\nG92 E0 ;Set extruder position to zero\nG28 ;Auto home"
- },
- "machine_end_gcode": {
- "default_value": "G91 ;Switch to relative positioning\nG1 E-1 ;Retract filament to lower pressure\nG0 X0 Y200 ;Move hotend to left and bed forward\nM104 S0 ;Cooldown hotend\nG90 ;Switch to absolute mode\nG92 E0 ;Set extruder to zero\nM140 S0 ;Cooldown bed\nM84 ; Disable steppers"
- },
- "machine_extruder_count": {
- "default_value": 1
- }
-
- }
-}
diff --git a/resources/definitions/geeetech_A10M.def.json b/resources/definitions/geeetech_A10M.def.json
index c8f0d16712..d47756011e 100644
--- a/resources/definitions/geeetech_A10M.def.json
+++ b/resources/definitions/geeetech_A10M.def.json
@@ -1,58 +1,37 @@
-{
- "version": 2,
- "name": "Geeetech A10M",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A10M_1",
- "1": "geeetech_A10M_2"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A10M" },
- "machine_width": {
- "default_value": 220
- },
- "machine_height": {
- "default_value": 260
- },
- "machine_depth": {
- "default_value": 220
- }, "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": ";GeeeTech A10M start script\nG28 ;home\nG90 ;absolute positioning\nG1 X0 Y0 Z15 E0 F300 ;go to wait position\nM140 S{material_bed_temperature_layer_0} ;set bed temp\nM109 S{material_print_temperature_layer_0} ;set extruder temp and wait\nG1 Z0.8 F200 ;set extruder height\nG1 X220 Y0 E80 F1000 ;purge line\n;end of start script"
- },
- "machine_end_gcode": {
- "default_value": "G91\nG1 E-1\nG0 X0 Y200\nM104 S0\nG90\nG92 E0\nM140 S0\nM84\nM104 S0\nM140 S0\nM84"
- },
- "machine_extruder_count": {
- "default_value": 2
- }
-
- }
-}
+{
+ "version": 2,
+ "name": "Geeetech A10M",
+ "inherits": "Geeetech_Base_Dual_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "Geeetech_PLA_Cyan"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 28 },
+ "machine_depth": { "default_value": 220 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech A10M" },
+ "machine_start_gcode": { "default_value": ";Geeetech A10M Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 220 },
+ "prime_tower_position_x": { "value": 190 },
+ "prime_tower_position_y": { "value": 160 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A10Pro.def.json b/resources/definitions/geeetech_A10Pro.def.json
new file mode 100644
index 0000000000..c383d30814
--- /dev/null
+++ b/resources/definitions/geeetech_A10Pro.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech A10Pro",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 28 },
+ "machine_depth": { "default_value": 220 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech A10Pro" },
+ "machine_start_gcode": { "default_value": ";Geeetech A10Pro Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 220 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A10T.def.json b/resources/definitions/geeetech_A10T.def.json
index 0f1a0b76ab..df2444fe50 100644
--- a/resources/definitions/geeetech_A10T.def.json
+++ b/resources/definitions/geeetech_A10T.def.json
@@ -1,60 +1,38 @@
-{
- "version": 2,
- "name": "Geeetech A10T",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A10T_1",
- "1": "geeetech_A10T_2",
- "2": "geeetech_A10T_3"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A10T" },
- "machine_width": {
- "default_value": 220
- },
- "machine_height": {
- "default_value": 220
- },
- "machine_depth": {
- "default_value": 260
- },
- "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": "G28 \nG1 Z15 F300\nM107\nG90\nM82\nM104 S215\nM140 S55\nG92 E0\nM109 S215\nM107\nM163 S0 P0.33\nM163 S1 P0.33\nM163 S2 P0.33\nM164 S4\nG0 X10 Y20 F6000\nG1 Z0.8\nG1 F300 X180 E40\nG1 F1200 Z2\nG92 E0\nG28"
- },
- "machine_end_gcode": {
- "default_value": "G91\nG1 E-1\nG0 X0 Y200\nM104 S0\nG90\nG92 E0\nM140 S0\nM84\nM104 S0\nM140 S0\nM84"
- },
- "machine_extruder_count": {
- "default_value": 3
- }
-
- }
-}
+{
+ "version": 2,
+ "name": "Geeetech A10T",
+ "inherits": "Geeetech_Base_Multi_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Multi_Extruder_0",
+ "1": "Geeetech_Multi_Extruder_1",
+ "2": "Geeetech_Multi_Extruder_2"
+ },
+ "preferred_material": "Geeetech_PLA_Magenta"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 28 },
+ "machine_depth": { "default_value": 220 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech A10T" },
+ "machine_start_gcode": { "default_value": ";Geeetech A10T Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 220 },
+ "prime_tower_position_x": { "value": 190 },
+ "prime_tower_position_y": { "value": 160 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A20.def.json b/resources/definitions/geeetech_A20.def.json
index d96452176f..68a41ad8b8 100644
--- a/resources/definitions/geeetech_A20.def.json
+++ b/resources/definitions/geeetech_A20.def.json
@@ -1,57 +1,29 @@
-{
- "version": 2,
- "name": "Geeetech A20",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A20_1"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A20" },
- "machine_width": {
- "default_value": 250
- },
- "machine_height": {
- "default_value": 250
- },
- "machine_depth": {
- "default_value": 250
- }, "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": "G28 \nG1 Z15 F300\nM107\nG90\nM82\nM104 S215\nM140 S55\nG92 E0\nM109 S215\nM107\nG0 X10 Y20 F6000\nG1 Z0.8\nG1 F300 X200 E40\nG1 F1200 Z2\nG92 E0\nG28"
- },
- "machine_end_gcode": {
- "default_value": "G91\nG1 E-1\nG0 X0 Y200\nM104 S0\nG90\nG92 E0\nM140 S0\nM84\nM104 S0\nM140 S0\nM84"
- },
- "machine_extruder_count": {
- "default_value": 1
- }
-
- }
-}
+{
+ "version": 2,
+ "name": "Geeetech A20",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 250 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 250 },
+ "machine_name": { "default_value": "Geeetech A20" },
+ "machine_start_gcode": { "default_value": ";Geeetech A20 Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 250 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A20M.def.json b/resources/definitions/geeetech_A20M.def.json
index d06cf9565f..5b7cf30dfe 100644
--- a/resources/definitions/geeetech_A20M.def.json
+++ b/resources/definitions/geeetech_A20M.def.json
@@ -1,58 +1,37 @@
-{
- "version": 2,
- "name": "Geeetech A20M",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A20M_1",
- "1": "geeetech_A20M_2"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A20M" },
- "machine_width": {
- "default_value": 250
- },
- "machine_height": {
- "default_value": 250
- },
- "machine_depth": {
- "default_value": 250
- }, "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": ";GeeeTech A20M start script\nG28 ;home\nG90 ;absolute positioning\nG1 X0 Y0 Z15 E0 F300 ;go to wait position\nM140 S{material_bed_temperature_layer_0} ;set bed temp\nM109 S{material_print_temperature_layer_0} ;set extruder temp and wait\nG1 Z0.8 F200 ;set extruder height\nG1 X220 Y0 E80 F1000 ;purge line\n;end of start script"
- },
- "machine_end_gcode": {
- "default_value": "G91\nG1 E-1\nG0 X0 Y200\nM104 S0\nG90\nG92 E0\nM140 S0\nM84\nM104 S0\nM140 S0\nM84"
- },
- "machine_extruder_count": {
- "default_value": 2
- }
-
- }
-}
+{
+ "version": 2,
+ "name": "Geeetech A20M",
+ "inherits": "Geeetech_Base_Dual_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "Geeetech_PLA_Yellow"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 250 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 250 },
+ "machine_name": { "default_value": "Geeetech A20M" },
+ "machine_start_gcode": { "default_value": ";Geeetech A20M Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 250 },
+ "prime_tower_position_x": { "value": 220 },
+ "prime_tower_position_y": { "value": 190 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A20T.def.json b/resources/definitions/geeetech_A20T.def.json
index 72ed97978c..5191bac751 100644
--- a/resources/definitions/geeetech_A20T.def.json
+++ b/resources/definitions/geeetech_A20T.def.json
@@ -1,59 +1,38 @@
-{
- "version": 2,
- "name": "Geeetech A20T",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_A20T_1",
- "1": "geeetech_A20T_2",
- "2": "geeetech_A20T_3"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech A20T" },
- "machine_width": {
- "default_value": 250
- },
- "machine_height": {
- "default_value": 250
- },
- "machine_depth": {
- "default_value": 250
- }, "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": "G28 \nG1 Z15 F300\nM107\nG90\nM82\nM104 S215\nM140 S55\nG92 E0\nM109 S215\nM107\nM163 S0 P0.33\nM163 S1 P0.33\nM163 S2 P0.33\nM164 S4\nG0 X10 Y20 F6000\nG1 Z0.8\nG1 F300 X200 E40\nG1 F1200 Z2\nG92 E0\nG28"
- },
- "machine_end_gcode": {
- "default_value": "G91\nG1 E-1\nG0 X0 Y200\nM104 S0\nG90\nG92 E0\nM140 S0\nM84\nM104 S0\nM140 S0\nM84"
- },
- "machine_extruder_count": {
- "default_value": 3
- }
-
- }
-}
+{
+ "version": 2,
+ "name": "Geeetech A20T",
+ "inherits": "Geeetech_Base_Multi_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Multi_Extruder_0",
+ "1": "Geeetech_Multi_Extruder_1",
+ "2": "Geeetech_Multi_Extruder_2"
+ },
+ "preferred_material": "Geeetech_PLA_Red"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 250 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 250 },
+ "machine_name": { "default_value": "Geeetech A20T" },
+ "machine_start_gcode": { "default_value": ";Geeetech A20T Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 250 },
+ "prime_tower_position_x": { "value": 220 },
+ "prime_tower_position_y": { "value": 190 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A30M.def.json b/resources/definitions/geeetech_A30M.def.json
new file mode 100644
index 0000000000..8b6e6a703b
--- /dev/null
+++ b/resources/definitions/geeetech_A30M.def.json
@@ -0,0 +1,37 @@
+{
+ "version": 2,
+ "name": "Geeetech A30M",
+ "inherits": "Geeetech_Base_Dual_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "Geeetech_PLA_Green"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 320 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 420 },
+ "machine_name": { "default_value": "Geeetech A30M" },
+ "machine_start_gcode": { "default_value": ";Geeetech A30M Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 320 },
+ "prime_tower_position_x": { "value": 290 },
+ "prime_tower_position_y": { "value": 260 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A30Pro.def.json b/resources/definitions/geeetech_A30Pro.def.json
new file mode 100644
index 0000000000..38b2510933
--- /dev/null
+++ b/resources/definitions/geeetech_A30Pro.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech A30Pro",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 320 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 420 },
+ "machine_name": { "default_value": "Geeetech A30Pro" },
+ "machine_start_gcode": { "default_value": ";Geeetech A30Pro Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 320 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_A30T.def.json b/resources/definitions/geeetech_A30T.def.json
new file mode 100644
index 0000000000..610ee35fa4
--- /dev/null
+++ b/resources/definitions/geeetech_A30T.def.json
@@ -0,0 +1,38 @@
+{
+ "version": 2,
+ "name": "Geeetech A30T",
+ "inherits": "Geeetech_Base_Multi_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Multi_Extruder_0",
+ "1": "Geeetech_Multi_Extruder_1",
+ "2": "Geeetech_Multi_Extruder_2"
+ },
+ "preferred_material": "Geeetech_PLA_Blue"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 320 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 420 },
+ "machine_name": { "default_value": "Geeetech A30T" },
+ "machine_start_gcode": { "default_value": ";Geeetech A30T Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 320 },
+ "prime_tower_position_x": { "value": 290 },
+ "prime_tower_position_y": { "value": 260 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_E180.def.json b/resources/definitions/geeetech_E180.def.json
new file mode 100644
index 0000000000..481f4db77a
--- /dev/null
+++ b/resources/definitions/geeetech_E180.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech E180",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 28 },
+ "machine_depth": { "default_value": 130 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_heated_bed": { "default_value": false },
+ "machine_height": { "default_value": 126 },
+ "machine_name": { "default_value": "Geeetech E180" },
+ "machine_start_gcode": { "default_value": ";Geeetech E180 Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y120.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y120.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y10 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 125 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_GiantArmD200.def.json b/resources/definitions/geeetech_GiantArmD200.def.json
new file mode 100644
index 0000000000..d625e8ded6
--- /dev/null
+++ b/resources/definitions/geeetech_GiantArmD200.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech GiantArmD200",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 180 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 180 },
+ "machine_name": { "default_value": "Geeetech GiantArmD200" },
+ "machine_start_gcode": { "default_value": ";Geeetech GiantArmD200 Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y160.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y160.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y10 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 300 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_I3ProB.def.json b/resources/definitions/geeetech_I3ProB.def.json
new file mode 100644
index 0000000000..c0420ebc84
--- /dev/null
+++ b/resources/definitions/geeetech_I3ProB.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech I3ProB",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 200 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 180 },
+ "machine_name": { "default_value": "Geeetech I3ProB" },
+ "machine_start_gcode": { "default_value": ";Geeetech I3ProB Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y180.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y180.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 200 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_I3ProC.def.json b/resources/definitions/geeetech_I3ProC.def.json
new file mode 100644
index 0000000000..f05185e5ba
--- /dev/null
+++ b/resources/definitions/geeetech_I3ProC.def.json
@@ -0,0 +1,38 @@
+{
+ "version": 2,
+ "name": "Geeetech I3ProC",
+ "inherits": "Geeetech_Base_Dual_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "Geeetech_PLA_Black"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 200 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 180 },
+ "machine_name": { "default_value": "Geeetech I3ProC" },
+ "machine_start_gcode": { "default_value": ";Geeetech I3ProC Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y180.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y180.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 200 },
+ "prime_tower_position_x": { "value": 170 },
+ "prime_tower_position_y": { "value": 140 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_I3ProW.def.json b/resources/definitions/geeetech_I3ProW.def.json
new file mode 100644
index 0000000000..db54625f2d
--- /dev/null
+++ b/resources/definitions/geeetech_I3ProW.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech I3ProW",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 200 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 180 },
+ "machine_name": { "default_value": "Geeetech I3ProW" },
+ "machine_start_gcode": { "default_value": ";Geeetech I3ProW Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y180.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y180.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 200 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MeCreator.def.json b/resources/definitions/geeetech_MeCreator.def.json
new file mode 100644
index 0000000000..3dece7354c
--- /dev/null
+++ b/resources/definitions/geeetech_MeCreator.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech MeCreator",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 150 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 125 },
+ "machine_name": { "default_value": "Geeetech MeCreator" },
+ "machine_start_gcode": { "default_value": ";Geeetech MeCreator Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y130.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y130.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y10 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 150 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MeCreator2.def.json b/resources/definitions/geeetech_MeCreator2.def.json
new file mode 100644
index 0000000000..4e963892e7
--- /dev/null
+++ b/resources/definitions/geeetech_MeCreator2.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech MeCreator2",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 160 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 160 },
+ "machine_name": { "default_value": "Geeetech MeCreator2" },
+ "machine_start_gcode": { "default_value": ";Geeetech MeCreator2 Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y140.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y140.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y10 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 160 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MeDucer.def.json b/resources/definitions/geeetech_MeDucer.def.json
new file mode 100644
index 0000000000..ae7a6284d4
--- /dev/null
+++ b/resources/definitions/geeetech_MeDucer.def.json
@@ -0,0 +1,30 @@
+{
+ "version": 2,
+ "name": "Geeetech MeDucer",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 45 },
+ "machine_depth": { "default_value": 150 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-1.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-75, 35],
+ [18, 35],
+ [18, -18],
+ [-75, -18]
+ ]
+ },
+ "machine_height": { "default_value": 150 },
+ "machine_name": { "default_value": "Geeetech MeDucer" },
+ "machine_start_gcode": { "default_value": ";Geeetech MeDucer Custom Start G-code\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y10 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y130.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y130.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y10 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y10 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 180 },
+ "retraction_amount": { "value": 2 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_Mizar.def.json b/resources/definitions/geeetech_Mizar.def.json
new file mode 100644
index 0000000000..41a97eabd0
--- /dev/null
+++ b/resources/definitions/geeetech_Mizar.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech Mizar",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 220 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech Mizar" },
+ "machine_start_gcode": { "default_value": ";Official open-source firmware for Mizar: https://github.com/Geeetech3D/Mizar \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 220 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MizarM.def.json b/resources/definitions/geeetech_MizarM.def.json
new file mode 100644
index 0000000000..d4182ebb62
--- /dev/null
+++ b/resources/definitions/geeetech_MizarM.def.json
@@ -0,0 +1,38 @@
+{
+ "version": 2,
+ "name": "Geeetech MizarM",
+ "inherits": "Geeetech_Base_Dual_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains":
+ {
+ "0": "Geeetech_Dual_Extruder_0",
+ "1": "Geeetech_Dual_Extruder_1"
+ },
+ "preferred_material": "Geeetech_PLA_Magenta"
+ },
+ "overrides":
+ {
+ "brim_width": { "value": 10 },
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 255 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech MizarM" },
+ "machine_start_gcode": { "default_value": ";Official open-source firmware for MizarM: https://github.com/Geeetech3D/Mizar-M \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 255 },
+ "material_standby_temperature": { "value": 200 },
+ "prime_tower_position_x": { "value": 225 },
+ "prime_tower_position_y": { "value": 195 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MizarMax.def.json b/resources/definitions/geeetech_MizarMax.def.json
new file mode 100644
index 0000000000..00d320ab18
--- /dev/null
+++ b/resources/definitions/geeetech_MizarMax.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech MizarMax",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 320 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 400 },
+ "machine_name": { "default_value": "Geeetech MizarMax" },
+ "machine_start_gcode": { "default_value": ";Official open-source firmware for MizarMax: https://github.com/Geeetech3D/Mizar-Max \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 320 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MizarPro.def.json b/resources/definitions/geeetech_MizarPro.def.json
new file mode 100644
index 0000000000..f5dd497d16
--- /dev/null
+++ b/resources/definitions/geeetech_MizarPro.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech MizarPro",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 220 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech MizarPro" },
+ "machine_start_gcode": { "default_value": ";Official open-source firmware for MizarPro: https://github.com/Geeetech3D/Mizar-Pro \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 220 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_MizarS.def.json b/resources/definitions/geeetech_MizarS.def.json
new file mode 100644
index 0000000000..73f4f60aa8
--- /dev/null
+++ b/resources/definitions/geeetech_MizarS.def.json
@@ -0,0 +1,29 @@
+{
+ "version": 2,
+ "name": "Geeetech MizarS",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "gantry_height": { "value": 35 },
+ "machine_depth": { "default_value": 255 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-31, 31],
+ [34, 31],
+ [34, -40],
+ [-31, -40]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_name": { "default_value": "Geeetech MizarS" },
+ "machine_start_gcode": { "default_value": ";Official open-source firmware for MizarS: https://github.com/Geeetech3D/Mizar-S \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 255 }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_Mizar_S.def.json b/resources/definitions/geeetech_Mizar_S.def.json
deleted file mode 100644
index 7cd7e42e68..0000000000
--- a/resources/definitions/geeetech_Mizar_S.def.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "version": 2,
- "name": "Geeetech Mizar_S",
- "inherits": "fdmprinter",
- "metadata": {
- "visible": true,
- "author": "Amit L",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "has_materials": true,
- "machine_extruder_trains":
- {
- "0": "geeetech_Mizar_S_1"
- }
-
- },
-
- "overrides": {
- "machine_name": { "default_value": "Geeetech Mizar_S" },
- "machine_width": {
- "default_value": 255
- },
- "machine_height": {
- "default_value": 260
- },
- "machine_depth": {
- "default_value": 255
- },
- "machine_center_is_zero": {
- "default_value": false
- },
- "layer_height": { "default_value": 0.1 },
- "layer_height_0": { "default_value": 0.15 },
- "retraction_amount": { "default_value": 0.8 },
- "retraction_speed": { "default_value": 35 },
- "adhesion_type": { "default_value": "skirt" },
- "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] },
- "gantry_height": { "value": "28" },
- "machine_max_feedrate_z": { "default_value": 12 },
- "machine_max_feedrate_e": { "default_value": 120 },
- "machine_max_acceleration_z": { "default_value": 500 },
- "machine_acceleration": { "default_value": 1000 },
- "machine_max_jerk_xy": { "default_value": 10 },
- "machine_max_jerk_z": { "default_value": 0.2 },
- "machine_max_jerk_e": { "default_value": 2.5 },
- "machine_heated_bed": { "default_value": true },
- "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
- "machine_start_gcode": {
- "default_value": "G28 ; Auto home\nG1 Z15 F300 ;Move up slightly\nM107 ;Off fans\nG90 ;Switch to absolute positioning\nM82 ;Extruder absolute mode\nG92 E0 ;Set position of extruder to 0\nG0 X10 Y20 F1500 ;Move to X10 Y20 at 1500mms\nG1 Z0.8 ;Move Z to 0.8\nG1 F300 X180 E40 ;Extrude a line of filament\nG1 F1200 Z2 ;Raise Z\nG92 E0 ;Set extruder position to zero\nG28 ;Auto home"
- },
- "machine_end_gcode": {
- "default_value": "G91 ;Switch to relative positioning\nG1 E-1 ;Retract filament to lower pressure\nG0 X0 Y200 ;Move hotend to left and bed forward\nM104 S0 ;Cooldown hotend\nG90 ;Switch to absolute mode\nG92 E0 ;Set extruder to zero\nM140 S0 ;Cooldown bed\nM84 ; Disable steppers"
- },
- "machine_extruder_count": {
- "default_value": 1
- }
-
- }
-}
diff --git a/resources/definitions/geeetech_Thunder.def.json b/resources/definitions/geeetech_Thunder.def.json
new file mode 100644
index 0000000000..cc3e4044f8
--- /dev/null
+++ b/resources/definitions/geeetech_Thunder.def.json
@@ -0,0 +1,132 @@
+{
+ "version": 2,
+ "name": "Geeetech Thunder",
+ "inherits": "Geeetech_Base_Single_Extruder",
+ "metadata":
+ {
+ "visible": true,
+ "machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
+ },
+ "overrides":
+ {
+ "acceleration_print": { "value": 3500 },
+ "acceleration_travel": { "value": 5000 },
+ "cool_fan_full_at_height":
+ {
+ "label": "Regular Fan Speed at Height",
+ "value": "layer_height_0 + layer_height"
+ },
+ "cool_fan_speed":
+ {
+ "maximum_value": "151",
+ "value": "151 if speed_infill>=200 else 100"
+ },
+ "cool_fan_speed_max":
+ {
+ "maximum_value": "151",
+ "value": "cool_fan_speed"
+ },
+ "cool_fan_speed_min":
+ {
+ "maximum_value": "151",
+ "value": "cool_fan_speed"
+ },
+ "cool_min_layer_time": { "value": "1.3 if speed_infill>=200 else 2.5" },
+ "fill_outline_gaps":
+ {
+ "label": "Print Thin Walls",
+ "value": false
+ },
+ "gantry_height": { "value": 35 },
+ "infill_before_walls":
+ {
+ "label": "Infill Before Walls",
+ "value": false
+ },
+ "infill_overlap":
+ {
+ "label": "Infill Overlap Percentage",
+ "value": 10.0
+ },
+ "infill_sparse_density":
+ {
+ "label": "Infill Density",
+ "value": "15"
+ },
+ "infill_wipe_dist":
+ {
+ "label": "Infill Wipe Distance",
+ "value": 0.0
+ },
+ "line_width": { "value": "1.2*machine_nozzle_size if speed_infill>=200 else machine_nozzle_size" },
+ "machine_depth": { "default_value": 250 },
+ "machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-20, 25],
+ [20, 25],
+ [20, -25],
+ [-20, -25]
+ ]
+ },
+ "machine_height": { "default_value": 260 },
+ "machine_max_acceleration_e": { "value": 3500 },
+ "machine_max_acceleration_x": { "value": 5000 },
+ "machine_max_acceleration_y": { "value": 4000 },
+ "machine_max_acceleration_z": { "value": 50 },
+ "machine_max_feedrate_e": { "value": 60 },
+ "machine_max_feedrate_x": { "value": 300 },
+ "machine_max_jerk_e": { "value": 8 },
+ "machine_max_jerk_xy": { "value": 45 },
+ "machine_max_jerk_z": { "value": 0.8 },
+ "machine_name": { "default_value": "Geeetech Thunder" },
+ "machine_start_gcode": { "default_value": ";Official viki homepage for Thunder:https://www.geeetech.com/wiki/index.php/Geeetech_Thunder_3D_printer \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
+ "machine_width": { "default_value": 250 },
+ "material_flow_layer_0": { "value": 95 },
+ "material_print_temperature":
+ {
+ "maximum_value": "250",
+ "value": "200 if speed_infill <=150 else 205 if speed_infill <= 200 else 215 if speed_infill <= 260 else 220"
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value_warning": 300,
+ "value": "material_print_temperature"
+ },
+ "retraction_speed": { "value": 35 },
+ "skin_overlap":
+ {
+ "label": "Skin Overlap Percentage",
+ "value": 10.0
+ },
+ "small_hole_max_size": { "value": "8 if speed_infill>=200 else 0" },
+ "speed_infill": { "maximum_value_warning": "300" },
+ "speed_print":
+ {
+ "maximum_value_warning": "300",
+ "value": 250
+ },
+ "speed_roofing": { "maximum_value_warning": "300" },
+ "speed_support": { "maximum_value_warning": "200" },
+ "speed_support_bottom": { "maximum_value_warning": "200" },
+ "speed_support_infill": { "maximum_value_warning": "200" },
+ "speed_support_interface": { "maximum_value_warning": "200" },
+ "speed_support_roof": { "maximum_value_warning": "200" },
+ "speed_topbottom": { "maximum_value_warning": "300" },
+ "speed_travel_layer_0": { "maximum_value_warning": "200" },
+ "speed_wall": { "maximum_value_warning": "300" },
+ "speed_wall_0": { "maximum_value_warning": "300" },
+ "speed_wall_x": { "maximum_value_warning": "300" },
+ "wall_0_wipe_dist":
+ {
+ "label": "Outer Wall Wipe Distance",
+ "value": 0.0
+ },
+ "zig_zaggify_infill":
+ {
+ "label": "Connect Infill Lines",
+ "value": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/definitions/geeetech_a30.def.json b/resources/definitions/geeetech_a30.def.json
deleted file mode 100644
index d4f7df139f..0000000000
--- a/resources/definitions/geeetech_a30.def.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "version": 2,
- "name": "Geeetech A30",
- "inherits": "fdmprinter",
- "metadata": {
- "author": "William & Cataldo URSO",
- "manufacturer": "Geeetech",
- "file_formats": "text/x-gcode",
- "visible": true,
- "has_materials": true,
- "preferred_quality_type": "draft",
- "machine_extruder_trains": {
- "0": "geeetech_a30_extruder_0"
- }
- },
- "overrides": {
- "machine_name": {
- "default_value": "Geeetech A30"
- },
- "machine_start_gcode": {
- "default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0"
- },
- "machine_end_gcode": {
- "default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84"
- },
- "machine_width": {
- "default_value": 320
- },
- "machine_height": {
- "default_value": 420
- },
- "machine_depth": {
- "default_value": 320
- },
- "machine_heated_bed": {
- "default_value": true
- },
- "machine_center_is_zero": {
- "default_value": false
- },
- "material_diameter": {
- "default_value": 1.75
- },
- "machine_nozzle_size": {
- "default_value": 0.4
- },
- "layer_height": {
- "default_value": 0.1
- },
- "layer_height_0": {
- "default_value": 0.3
- },
- "retraction_amount": {
- "default_value": 2
- },
- "retraction_speed": {
- "default_value": 25
- },
- "adhesion_type": {
- "default_value": "skirt"
- },
- "machine_head_with_fans_polygon": {
- "default_value": [
- [-75, 35],
- [18, 35],
- [18, -18],
- [-75, -18]
- ]
- },
- "gantry_height": {
- "value": "55"
- },
- "machine_max_feedrate_x": {
- "default_value": 300
- },
- "machine_max_feedrate_y": {
- "default_value": 300
- },
- "machine_max_feedrate_z": {
- "default_value": 7
- },
- "machine_max_feedrate_e": {
- "default_value": 50
- },
- "machine_max_acceleration_x": {
- "default_value": 2000
- },
- "machine_max_acceleration_y": {
- "default_value": 2000
- },
- "machine_max_acceleration_z": {
- "default_value": 100
- },
- "machine_max_acceleration_e": {
- "default_value": 10000
- },
- "machine_acceleration": {
- "default_value": 2000
- },
- "machine_max_jerk_xy": {
- "default_value": 10
- },
- "machine_max_jerk_z": {
- "default_value": 1
- },
- "machine_max_jerk_e": {
- "default_value": 5
- },
- "machine_gcode_flavor": {
- "default_value": "Repetier"
- }
- }
-}
diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json
index f05ee97441..58396c4d28 100644
--- a/resources/definitions/ultimaker.def.json
+++ b/resources/definitions/ultimaker.def.json
@@ -58,6 +58,7 @@
"jerk_travel_enabled": { "value": false },
"jerk_wall": { "minimum_value_warning": 20 },
"jerk_wall_0": { "minimum_value_warning": 20 },
+ "layer_height": { "value": 0.15 },
"layer_height_0": { "value": "max(0.2, layer_height)" },
"line_width": { "value": "machine_nozzle_size" },
"machine_max_feedrate_e": { "default_value": 45 },
@@ -75,7 +76,7 @@
},
"meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" },
"meshfix_maximum_resolution": { "value": "max(speed_wall_0 / 75, 0.5)" },
- "minimum_support_area": { "value": "4.0" },
+ "minimum_support_area": { "value": "(2 + support_offset)**2" },
"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" },
diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json
index b28ce07770..f68d51dd6c 100644
--- a/resources/definitions/ultimaker2.def.json
+++ b/resources/definitions/ultimaker2.def.json
@@ -2,102 +2,105 @@
"version": 2,
"name": "Ultimaker 2",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
"visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 3,
"file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj",
- "platform_texture": "Ultimaker2backplate.png",
- "platform_offset": [9, 0, 0],
- "has_materials": false,
- "has_machine_quality": true,
- "preferred_variant_name": "0.4 mm",
- "machine_extruder_trains":
- {
- "0": "ultimaker2_extruder_0"
- },
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "structur3d_dap100silicone",
+ "ultimaker_petg_red",
+ "ultimaker_petg_blue",
+ "ultimaker_petg_grey",
+ "ultimaker_petg_black",
+ "ultimaker_petg_green",
+ "ultimaker_petg_white",
+ "ultimaker_petg_orange",
+ "ultimaker_petg_silver",
+ "ultimaker_petg_yellow",
+ "ultimaker_petg_transparent",
+ "ultimaker_petg_red_translucent",
+ "ultimaker_petg_blue_translucent",
+ "ultimaker_petg_green_translucent",
+ "ultimaker_petg_yellow_fluorescent"
+ ],
"firmware_file": "MarlinUltimaker2.hex",
- "exclude_materials": [ "generic_hips", "generic_petg", "structur3d_dap100silicone", "ultimaker_petg_red", "ultimaker_petg_blue", "ultimaker_petg_grey", "ultimaker_petg_black", "ultimaker_petg_green", "ultimaker_petg_white", "ultimaker_petg_orange", "ultimaker_petg_silver", "ultimaker_petg_yellow", "ultimaker_petg_transparent", "ultimaker_petg_red_translucent", "ultimaker_petg_blue_translucent", "ultimaker_petg_green_translucent", "ultimaker_petg_yellow_fluorescent"]
+ "has_machine_quality": true,
+ "has_materials": false,
+ "machine_extruder_trains": { "0": "ultimaker2_extruder_0" },
+ "platform_offset": [
+ 9,
+ 0,
+ 0
+ ],
+ "platform_texture": "Ultimaker2backplate.png",
+ "preferred_variant_name": "0.4 mm",
+ "weight": 3
},
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2" },
- "machine_start_gcode" : {
- "value": "\"G0 F3000 Y50 ;avoid prime blob\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG28 Z0 ;move Z to bottom endstops\\nG28 X0 Y0 ;move X/Y to endstops\\nG1 X15 Y0 F4000 ;move X/Y to front of printer\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 Y50 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\""
- },
- "machine_end_gcode" : {
- "value": "\";Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\" if machine_gcode_flavor == \"UltiGCode\" else \"M104 S0 ;extruder heater off\\nM140 S0 ;heated bed heater off (if you have it)\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning\\n;Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\""
- },
- "machine_width": {
- "default_value": 223
- },
- "machine_depth": {
- "default_value": 223
- },
- "machine_height": {
- "default_value": 205
- },
- "machine_heated_bed": {
- "default_value": true
+ "overrides":
+ {
+ "cool_fan_speed_0": { "value": 0 },
+ "gantry_height": { "value": "48" },
+ "layer_height_0": { "value": 0.3 },
+ "machine_acceleration": { "default_value": 3000 },
+ "machine_center_is_zero": { "default_value": false },
+ "machine_depth": { "default_value": 223 },
+ "machine_disallowed_areas":
+ {
+ "default_value": [
+ [
+ [-115, 112.5],
+ [-82, 112.5],
+ [-84, 102.5],
+ [-115, 102.5]
+ ],
+ [
+ [115, 112.5],
+ [115, 102.5],
+ [110, 102.5],
+ [108, 112.5]
+ ],
+ [
+ [-115, -112.5],
+ [-115, -104.5],
+ [-84, -104.5],
+ [-82, -112.5]
+ ],
+ [
+ [115, -112.5],
+ [108, -112.5],
+ [110, -104.5],
+ [115, -104.5]
+ ]
+ ]
},
+ "machine_end_gcode": { "value": "\";Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\" if machine_gcode_flavor == \"UltiGCode\" else \"M104 S0 ;extruder heater off\\nM140 S0 ;heated bed heater off (if you have it)\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning\\n;Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\"" },
+ "machine_gcode_flavor": { "default_value": "UltiGCode" },
"machine_head_with_fans_polygon":
{
"default_value": [
- [ -42, 12 ],
- [ -42, -32 ],
- [ 62, 12 ],
- [ 62, -32 ]
+ [-42, 12],
+ [-42, -32],
+ [62, 12],
+ [62, -32]
]
},
- "machine_center_is_zero": {
- "default_value": false
- },
- "gantry_height": {
- "value": "48"
- },
- "machine_use_extruder_offset_to_offset_coords": {
- "default_value": true
- },
- "machine_gcode_flavor": {
- "default_value": "UltiGCode"
- },
- "machine_disallowed_areas": {
- "default_value": [
- [[-115, 112.5], [ -82, 112.5], [ -84, 102.5], [-115, 102.5]],
- [[ 115, 112.5], [ 115, 102.5], [ 110, 102.5], [ 108, 112.5]],
- [[-115, -112.5], [-115, -104.5], [ -84, -104.5], [ -82, -112.5]],
- [[ 115, -112.5], [ 108, -112.5], [ 110, -104.5], [ 115, -104.5]]
- ]},
- "machine_nozzle_tip_outer_diameter": {
- "default_value": 1
- },
- "machine_nozzle_head_distance": {
- "default_value": 3
- },
- "machine_max_feedrate_x": {
- "default_value": 300
- },
- "machine_max_feedrate_y": {
- "default_value": 300
- },
- "machine_max_feedrate_z": {
- "default_value": 40
- },
- "machine_acceleration": {
- "default_value": 3000
- },
- "support_z_distance": {
- "value": "0.1"
- },
- "cool_fan_speed_0": {
- "value": 0
- },
- "layer_height_0": {
- "value": 0.3
- },
- "speed_slowdown_layers": {
- "value": 2
- }
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 205 },
+ "machine_max_feedrate_x": { "default_value": 300 },
+ "machine_max_feedrate_y": { "default_value": 300 },
+ "machine_max_feedrate_z": { "default_value": 40 },
+ "machine_name": { "default_value": "Ultimaker 2" },
+ "machine_nozzle_head_distance": { "default_value": 3 },
+ "machine_nozzle_tip_outer_diameter": { "default_value": 1 },
+ "machine_start_gcode": { "value": "\"G0 F3000 Y50 ;avoid prime blob\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG28 Z0 ;move Z to bottom endstops\\nG28 X0 Y0 ;move X/Y to endstops\\nG1 X15 Y0 F4000 ;move X/Y to front of printer\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 Y50 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\"" },
+ "machine_use_extruder_offset_to_offset_coords": { "default_value": true },
+ "machine_width": { "default_value": 223 },
+ "speed_slowdown_layers": { "value": 2 },
+ "support_z_distance": { "value": "0.1" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_extended.def.json b/resources/definitions/ultimaker2_extended.def.json
index 572634c602..92adfae7e4 100644
--- a/resources/definitions/ultimaker2_extended.def.json
+++ b/resources/definitions/ultimaker2_extended.def.json
@@ -2,25 +2,21 @@
"version": 2,
"name": "Ultimaker 2 Extended",
"inherits": "ultimaker2",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "quality_definition": "ultimaker2",
- "weight": 3,
"file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj",
+ "firmware_file": "MarlinUltimaker2extended.hex",
+ "machine_extruder_trains": { "0": "ultimaker2_extended_extruder_0" },
"platform_texture": "Ultimaker2Extendedbackplate.png",
- "machine_extruder_trains":
- {
- "0": "ultimaker2_extended_extruder_0"
- },
- "firmware_file": "MarlinUltimaker2extended.hex"
+ "quality_definition": "ultimaker2",
+ "weight": 3
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2 Extended" },
- "machine_height": {
- "default_value": 305
- }
+ "overrides":
+ {
+ "machine_height": { "default_value": 305 },
+ "machine_name": { "default_value": "Ultimaker 2 Extended" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_extended_olsson.def.json b/resources/definitions/ultimaker2_extended_olsson.def.json
index d2eb7f9a5d..f2afc8c6d0 100644
--- a/resources/definitions/ultimaker2_extended_olsson.def.json
+++ b/resources/definitions/ultimaker2_extended_olsson.def.json
@@ -2,11 +2,9 @@
"version": 2,
"name": "Ultimaker 2 Extended with Olsson",
"inherits": "ultimaker2_extended",
- "metadata": {
- "has_variants": true
- },
-
- "overrides": {
+ "metadata": { "has_variants": true },
+ "overrides":
+ {
"machine_name": { "default_value": "Ultimaker 2 Extended with Olsson" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_extended_plus.def.json b/resources/definitions/ultimaker2_extended_plus.def.json
index 0242115057..23f8a15f40 100644
--- a/resources/definitions/ultimaker2_extended_plus.def.json
+++ b/resources/definitions/ultimaker2_extended_plus.def.json
@@ -2,25 +2,21 @@
"version": 2,
"name": "Ultimaker 2 Extended+",
"inherits": "ultimaker2_plus",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "quality_definition": "ultimaker2_plus",
- "weight": 2,
"file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj",
+ "firmware_file": "MarlinUltimaker2extended-plus.hex",
+ "machine_extruder_trains": { "0": "ultimaker2_extended_plus_extruder_0" },
"platform_texture": "Ultimaker2ExtendedPlusbackplate.png",
- "machine_extruder_trains":
- {
- "0": "ultimaker2_extended_plus_extruder_0"
- },
- "firmware_file": "MarlinUltimaker2extended-plus.hex"
+ "quality_definition": "ultimaker2_plus",
+ "weight": 2
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2 Extended+" },
- "machine_height": {
- "default_value": 305
- }
+ "overrides":
+ {
+ "machine_height": { "default_value": 305 },
+ "machine_name": { "default_value": "Ultimaker 2 Extended+" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json
index 774d215bef..e7ba8d1358 100644
--- a/resources/definitions/ultimaker2_go.def.json
+++ b/resources/definitions/ultimaker2_go.def.json
@@ -1,44 +1,59 @@
{
- "version": 2,
+ "version": 2,
"name": "Ultimaker 2 Go",
"inherits": "ultimaker2",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "quality_definition": "ultimaker2",
- "weight": 3,
"file_formats": "text/x-gcode",
"platform": "ultimaker2go_platform.obj",
+ "firmware_file": "MarlinUltimaker2go.hex",
+ "machine_extruder_trains": { "0": "ultimaker2_go_extruder_0" },
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ],
"platform_texture": "Ultimaker2Gobackplate.png",
- "platform_offset": [0, 0, 0],
- "machine_extruder_trains":
- {
- "0": "ultimaker2_go_extruder_0"
- },
- "firmware_file": "MarlinUltimaker2go.hex"
+ "quality_definition": "ultimaker2",
+ "weight": 3
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2 Go" },
- "machine_width": {
- "default_value": 120
- },
- "machine_depth": {
- "default_value": 120
- },
- "machine_height": {
- "default_value": 115
- },
- "machine_heated_bed": {
- "default_value": false
- },
- "machine_disallowed_areas": {
+ "overrides":
+ {
+ "machine_depth": { "default_value": 120 },
+ "machine_disallowed_areas":
+ {
"default_value": [
- [[-60, 60], [-33, 60], [-35, 52], [-60, 52]],
- [[ 60, 60], [ 60, 52], [ 35, 52], [ 33, 60]],
- [[-60, -60], [-60, -52], [-35, -52], [-33, -60]],
- [[ 60, -60], [ 33, -60], [ 35, -52], [ 60, -52]]
+ [
+ [-60, 60],
+ [-33, 60],
+ [-35, 52],
+ [-60, 52]
+ ],
+ [
+ [60, 60],
+ [60, 52],
+ [35, 52],
+ [33, 60]
+ ],
+ [
+ [-60, -60],
+ [-60, -52],
+ [-35, -52],
+ [-33, -60]
+ ],
+ [
+ [60, -60],
+ [33, -60],
+ [35, -52],
+ [60, -52]
+ ]
]
- }
+ },
+ "machine_heated_bed": { "default_value": false },
+ "machine_height": { "default_value": 115 },
+ "machine_name": { "default_value": "Ultimaker 2 Go" },
+ "machine_width": { "default_value": 120 }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_olsson.def.json b/resources/definitions/ultimaker2_olsson.def.json
index 2f8b877942..74c562988f 100644
--- a/resources/definitions/ultimaker2_olsson.def.json
+++ b/resources/definitions/ultimaker2_olsson.def.json
@@ -2,12 +2,13 @@
"version": 2,
"name": "Ultimaker 2 with Olsson Block",
"inherits": "ultimaker2",
- "metadata": {
+ "metadata":
+ {
"has_variants": true,
"quality_definition": "ultimaker2"
},
-
- "overrides": {
+ "overrides":
+ {
"machine_name": { "default_value": "Ultimaker 2 with Olsson Block" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json
index 0d4191383d..18b377813a 100644
--- a/resources/definitions/ultimaker2_plus.def.json
+++ b/resources/definitions/ultimaker2_plus.def.json
@@ -2,72 +2,104 @@
"version": 2,
"name": "Ultimaker 2+",
"inherits": "ultimaker2",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 1,
"file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj",
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "generic_bam",
+ "ultimaker_bam",
+ "generic_pva",
+ "ultimaker_pva",
+ "generic_tough_pla",
+ "ultimaker_tough_pla_black",
+ "ultimaker_tough_pla_green",
+ "ultimaker_tough_pla_red",
+ "ultimaker_tough_pla_white",
+ "generic_cffcpe",
+ "generic_cffpa",
+ "generic_gffcpe",
+ "generic_gffpa",
+ "structur3d_dap100silicone",
+ "ultimaker_petg_red",
+ "ultimaker_petg_blue",
+ "ultimaker_petg_grey",
+ "ultimaker_petg_black",
+ "ultimaker_petg_green",
+ "ultimaker_petg_white",
+ "ultimaker_petg_orange",
+ "ultimaker_petg_silver",
+ "ultimaker_petg_yellow",
+ "ultimaker_petg_transparent",
+ "ultimaker_petg_red_translucent",
+ "ultimaker_petg_blue_translucent",
+ "ultimaker_petg_green_translucent",
+ "ultimaker_petg_yellow_fluorescent"
+ ],
+ "firmware_file": "MarlinUltimaker2plus.hex",
+ "first_start_actions": [],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "machine_extruder_trains": { "0": "ultimaker2_plus_extruder_0" },
"platform_texture": "Ultimaker2Plusbackplate.png",
"preferred_variant_name": "0.4 mm",
- "has_variants": true,
- "has_materials": true,
- "has_machine_quality": true,
- "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone", "ultimaker_petg_red", "ultimaker_petg_blue", "ultimaker_petg_grey", "ultimaker_petg_black", "ultimaker_petg_green", "ultimaker_petg_white", "ultimaker_petg_orange", "ultimaker_petg_silver", "ultimaker_petg_yellow", "ultimaker_petg_transparent", "ultimaker_petg_red_translucent", "ultimaker_petg_blue_translucent", "ultimaker_petg_green_translucent", "ultimaker_petg_yellow_fluorescent"],
- "first_start_actions": [],
"supported_actions": [],
- "machine_extruder_trains":
- {
- "0": "ultimaker2_plus_extruder_0"
- },
- "firmware_file": "MarlinUltimaker2plus.hex"
+ "weight": 1
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2+" },
- "speed_infill": {
- "value": "speed_print"
- },
- "speed_wall_x": {
- "value": "speed_wall"
- },
- "layer_height_0": {
- "value": "round(machine_nozzle_size / 1.5, 2)"
- },
- "speed_support": {
- "value": "speed_wall_0"
- },
- "machine_height": {
- "default_value": 205
- },
- "machine_show_variants": {
- "default_value": true
- },
- "gantry_height": {
- "value": "52"
- },
- "machine_nozzle_head_distance": {
- "default_value": 5
- },
- "machine_heat_zone_length": {
- "default_value": 20
+ "overrides":
+ {
+ "gantry_height": { "value": "52" },
+ "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
+ "machine_disallowed_areas":
+ {
+ "default_value": [
+ [
+ [-115, 112.5],
+ [-78, 112.5],
+ [-80, 102.5],
+ [-115, 102.5]
+ ],
+ [
+ [115, 112.5],
+ [115, 102.5],
+ [105, 102.5],
+ [103, 112.5]
+ ],
+ [
+ [-115, -112.5],
+ [-115, -104.5],
+ [-84, -104.5],
+ [-82, -112.5]
+ ],
+ [
+ [115, -112.5],
+ [108, -112.5],
+ [110, -104.5],
+ [115, -104.5]
+ ]
+ ]
},
"machine_head_with_fans_polygon":
{
"default_value": [
- [ -44, 14 ],
- [ -44, -34 ],
- [ 64, 14 ],
- [ 64, -34 ]
+ [-44, 14],
+ [-44, -34],
+ [64, 14],
+ [64, -34]
]
},
- "machine_disallowed_areas": {
- "default_value": [
- [[-115, 112.5], [ -78, 112.5], [ -80, 102.5], [-115, 102.5]],
- [[ 115, 112.5], [ 115, 102.5], [ 105, 102.5], [ 103, 112.5]],
- [[-115, -112.5], [-115, -104.5], [ -84, -104.5], [ -82, -112.5]],
- [[ 115, -112.5], [ 108, -112.5], [ 110, -104.5], [ 115, -104.5]]
- ]
- }
+ "machine_heat_zone_length": { "default_value": 20 },
+ "machine_height": { "default_value": 205 },
+ "machine_name": { "default_value": "Ultimaker 2+" },
+ "machine_nozzle_head_distance": { "default_value": 5 },
+ "machine_show_variants": { "default_value": true },
+ "speed_infill": { "value": "speed_print" },
+ "speed_support": { "value": "speed_wall_0" },
+ "speed_wall_x": { "value": "speed_wall" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker2_plus_connect.def.json b/resources/definitions/ultimaker2_plus_connect.def.json
index 5674b4f030..ac3c84546d 100644
--- a/resources/definitions/ultimaker2_plus_connect.def.json
+++ b/resources/definitions/ultimaker2_plus_connect.def.json
@@ -2,87 +2,131 @@
"version": 2,
"name": "Ultimaker 2+ Connect",
"inherits": "ultimaker2",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 1,
"file_formats": "application/x-ufp;text/x-gcode",
"platform": "ultimaker2_plus_connect_platform.obj",
- "platform_texture": "Ultimaker2PlusConnectbackplate.png",
- "platform_offset": [-1, -6, 0],
- "preferred_variant_name": "0.4 mm",
- "has_variants": true,
- "has_materials": true,
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "generic_bam",
+ "ultimaker_bam",
+ "generic_pva",
+ "ultimaker_pva",
+ "generic_tough_pla",
+ "ultimaker_tough_pla_black",
+ "ultimaker_tough_pla_green",
+ "ultimaker_tough_pla_red",
+ "ultimaker_tough_pla_white",
+ "generic_cffcpe",
+ "generic_cffpa",
+ "generic_gffcpe",
+ "generic_gffpa",
+ "structur3d_dap100silicone"
+ ],
+ "first_start_actions": [],
"has_machine_materials": true,
"has_machine_quality": true,
- "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ],
- "first_start_actions": [],
+ "has_materials": true,
+ "has_variants": true,
+ "machine_extruder_trains": { "0": "ultimaker2_plus_connect_extruder_0" },
+ "platform_offset": [
+ -1,
+ -6,
+ 0
+ ],
+ "platform_texture": "Ultimaker2PlusConnectbackplate.png",
+ "preferred_variant_name": "0.4 mm",
"supported_actions": [],
- "machine_extruder_trains":
- {
- "0": "ultimaker2_plus_connect_extruder_0"
- },
+ "supports_network_connection": true,
"supports_usb_connection": false,
- "supports_network_connection": true
+ "weight": 1
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 2+ Connect" },
- "machine_gcode_flavor": { "default_value": "Griffin" },
- "machine_width": { "default_value": 223 },
- "machine_depth": { "default_value": 220 },
- "machine_height": { "default_value": 205 },
- "machine_show_variants": { "default_value": true },
+ "overrides":
+ {
"gantry_height": { "value": "52" },
- "machine_nozzle_head_distance": { "default_value": 5 },
- "machine_heat_zone_length": { "default_value": 20 },
+ "infill_overlap": { "value": "0" },
+ "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'grid'" },
+ "infill_wipe_dist": { "value": "0" },
+ "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
+ "machine_depth": { "default_value": 220 },
+ "machine_disallowed_areas":
+ {
+ "default_value": [
+ [
+ [-115, 112.5],
+ [-83, 112.5],
+ [-85, 104.0],
+ [-115, 104.0]
+ ],
+ [
+ [115, 112.5],
+ [115, 104.0],
+ [104, 104.0],
+ [102, 112.5]
+ ],
+ [
+ [-115, -112.5],
+ [-115, -104.0],
+ [-87, -104.0],
+ [-85, -112.5]
+ ],
+ [
+ [115, -112.5],
+ [104, -112.5],
+ [106, -104.0],
+ [115, -104.0]
+ ]
+ ]
+ },
+ "machine_end_gcode": { "value": "''" },
+ "machine_gcode_flavor": { "default_value": "Griffin" },
"machine_head_with_fans_polygon":
{
"default_value": [
- [ -44, 14 ],
- [ -44, -34 ],
- [ 64, 14 ],
- [ 64, -34 ]
+ [-44, 14],
+ [-44, -34],
+ [64, 14],
+ [64, -34]
]
},
- "machine_disallowed_areas":
- {
- "default_value": [
- [[-115, 112.5], [ -83, 112.5], [ -85, 104.0], [-115, 104.0]],
- [[ 115, 112.5], [ 115, 104.0], [ 104, 104.0], [ 102, 112.5]],
- [[-115, -112.5], [-115, -104.0], [ -87, -104.0], [ -85, -112.5]],
- [[ 115, -112.5], [ 104, -112.5], [ 106, -104.0], [ 115, -104.0]]
- ]
- },
- "infill_wipe_dist": { "value": "0" },
- "infill_overlap": { "value": "0" },
- "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'grid'" },
- "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
- "optimize_wall_printing_order": { "value": "True" },
- "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" },
- "speed_support": { "value": "speed_wall_0" },
- "material_initial_print_temperature": {
- "value": "material_print_temperature",
- "maximum_value": 260
- },
- "material_final_print_temperature": {
- "value": "material_print_temperature",
- "maximum_value": 260
- },
- "material_print_temperature_layer_0": {
- "maximum_value": 260
- },
+ "machine_heat_zone_length": { "default_value": 20 },
+ "machine_height": { "default_value": 205 },
+ "machine_name": { "default_value": "Ultimaker 2+ Connect" },
+ "machine_nozzle_head_distance": { "default_value": 5 },
+ "machine_show_variants": { "default_value": true },
"machine_start_gcode": { "value": "''" },
- "machine_end_gcode": { "value": "''" },
+ "machine_width": { "default_value": 223 },
"material_bed_temperature": { "maximum_value": 110 },
"material_bed_temperature_layer_0": { "maximum_value": 110 },
+ "material_final_print_temperature":
+ {
+ "maximum_value": 260,
+ "value": "material_print_temperature"
+ },
+ "material_initial_print_temperature":
+ {
+ "maximum_value": 260,
+ "value": "material_print_temperature"
+ },
"material_print_temperature": { "maximum_value": 260 },
- "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
+ "material_print_temperature_layer_0": { "maximum_value": 260 },
"meshfix_maximum_deviation": { "value": "(layer_height / 3) if magic_spiralize else (layer_height / 4)" },
+ "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_travel_resolution": { "value": 0.5 },
- "prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
+ "optimize_wall_printing_order": { "value": "True" },
+ "prime_blob_enable":
+ {
+ "default_value": true,
+ "enabled": true,
+ "value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
+ },
"retraction_prime_speed": { "value": "15" },
- "retraction_speed": {"value": "45" },
- "speed_wall_x": { "value": "speed_wall" }
+ "retraction_speed": { "value": "45" },
+ "speed_support": { "value": "speed_wall_0" },
+ "speed_wall_x": { "value": "speed_wall" },
+ "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json
index eb19058a98..106f482b48 100644
--- a/resources/definitions/ultimaker3.def.json
+++ b/resources/definitions/ultimaker3.def.json
@@ -2,85 +2,54 @@
"version": 2,
"name": "Ultimaker 3",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
+ "visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "visible": true,
"file_formats": "application/gzip;text/x-gcode",
"platform": "ultimaker3_platform.obj",
- "platform_texture": "Ultimaker3backplate.png",
- "platform_offset": [0, 0, 0],
+ "bom_numbers": [
+ 9066
+ ],
+ "exclude_materials": [
+ "generic_hips",
+ "generic_cffcpe",
+ "generic_cffpa",
+ "generic_gffcpe",
+ "generic_gffpa",
+ "structur3d_dap100silicone"
+ ],
+ "firmware_update_info":
+ {
+ "check_urls": [ "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version" ],
+ "id": 9066,
+ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
+ },
+ "first_start_actions": [ "DiscoverUM3Action" ],
"has_machine_quality": true,
"has_materials": true,
"has_variants": true,
- "exclude_materials": [ "generic_hips", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ],
- "preferred_variant_name": "AA 0.4",
- "preferred_quality_type": "normal",
- "variants_name": "Print core",
"machine_extruder_trains":
{
"0": "ultimaker3_extruder_left",
"1": "ultimaker3_extruder_right"
},
- "first_start_actions": [ "DiscoverUM3Action" ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ],
+ "platform_texture": "Ultimaker3backplate.png",
+ "preferred_quality_type": "fast",
+ "preferred_variant_name": "AA 0.4",
"supported_actions": [ "DiscoverUM3Action" ],
- "supports_usb_connection": false,
"supports_network_connection": true,
- "firmware_update_info": {
- "id": 9066,
- "check_urls":
- [
- "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version"
- ],
- "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
- },
- "bom_numbers": [
- 9066
- ]
+ "supports_usb_connection": false,
+ "variants_name": "Print core"
},
-
-
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 3" },
- "machine_width": { "default_value": 233 },
- "machine_depth": { "default_value": 215 },
- "machine_height": { "default_value": 200 },
- "machine_heated_bed": { "default_value": true },
- "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
- "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
- "machine_head_with_fans_polygon":
- {
- "default_value":
- [
- [ -41.9, -45.8 ],
- [ -41.9, 33.9 ],
- [ 59.9, 33.9 ],
- [ 59.9, -45.8 ]
- ]
- },
- "machine_gcode_flavor": { "default_value": "Griffin" },
- "machine_max_feedrate_x": { "default_value": 300 },
- "machine_max_feedrate_y": { "default_value": 300 },
- "machine_max_feedrate_z": { "default_value": 40 },
- "machine_acceleration": { "default_value": 3000 },
- "gantry_height": { "value": "60" },
- "machine_disallowed_areas": { "default_value": [
- [[92.8, -53.4], [92.8, -97.5], [116.5, -97.5], [116.5, -53.4]],
- [[73.8, 107.5], [73.8, 100.5], [116.5, 100.5], [116.5, 107.5]],
- [[74.6, 107.5], [74.6, 100.5], [116.5, 100.5], [116.5, 107.5]],
- [[74.9, -97.5], [74.9, -107.5], [116.5, -107.5], [116.5, -97.5]],
- [[-116.5, -103.5], [-116.5, -107.5], [-100.9, -107.5], [-100.9, -103.5]],
- [[-116.5, 105.8], [-96.9, 105.8], [-96.9, 107.5], [-116.5, 107.5]]
- ]},
- "machine_extruder_count": { "default_value": 2 },
- "extruder_prime_pos_abs": { "default_value": true },
- "machine_start_gcode": { "default_value": "" },
- "machine_end_gcode": { "default_value": "G91 ;Relative movement\nG0 F15000 X8.0 Z0.5 E-4.5 ;Wiping+material retraction\nG0 F10000 Z1.5 E4.5 ;Compensation for the retraction\nG90 ;Disable relative movement" },
- "prime_tower_position_x": { "value": "machine_depth - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) - 30" },
- "prime_tower_wipe_enabled": { "default_value": false },
-
- "prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
+ "overrides":
+ {
"acceleration_enabled": { "value": true },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
@@ -93,22 +62,97 @@
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
+ "default_material_print_temperature": { "value": "200" },
+ "extruder_prime_pos_abs": { "default_value": true },
+ "gantry_height": { "value": "60" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
"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_acceleration": { "default_value": 3000 },
+ "machine_depth": { "default_value": 215 },
+ "machine_disallowed_areas":
+ {
+ "default_value": [
+ [
+ [92.8, -53.4],
+ [92.8, -97.5],
+ [116.5, -97.5],
+ [116.5, -53.4]
+ ],
+ [
+ [73.8, 107.5],
+ [73.8, 100.5],
+ [116.5, 100.5],
+ [116.5, 107.5]
+ ],
+ [
+ [74.6, 107.5],
+ [74.6, 100.5],
+ [116.5, 100.5],
+ [116.5, 107.5]
+ ],
+ [
+ [74.9, -97.5],
+ [74.9, -107.5],
+ [116.5, -107.5],
+ [116.5, -97.5]
+ ],
+ [
+ [-116.5, -103.5],
+ [-116.5, -107.5],
+ [-100.9, -107.5],
+ [-100.9, -103.5]
+ ],
+ [
+ [-116.5, 105.8],
+ [-96.9, 105.8],
+ [-96.9, 107.5],
+ [-116.5, 107.5]
+ ]
+ ]
+ },
+ "machine_end_gcode": { "default_value": "G91 ;Relative movement\nG0 F15000 X8.0 Z0.5 E-4.5 ;Wiping+material retraction\nG0 F10000 Z1.5 E4.5 ;Compensation for the retraction\nG90 ;Disable relative movement" },
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_gcode_flavor": { "default_value": "Griffin" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-41.9, -45.8],
+ [-41.9, 33.9],
+ [59.9, 33.9],
+ [59.9, -45.8]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 200 },
+ "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" },
- "default_material_print_temperature": { "value": "200" },
+ "machine_name": { "default_value": "Ultimaker 3" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
+ "machine_start_gcode": { "default_value": "" },
+ "machine_width": { "default_value": 233 },
"material_bed_temperature": { "maximum_value": "115" },
"material_bed_temperature_layer_0": { "maximum_value": "115" },
"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'"
+ },
"prime_tower_enable": { "default_value": true },
+ "prime_tower_position_x": { "value": "machine_depth - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) - 30" },
+ "prime_tower_wipe_enabled": { "default_value": false },
"retraction_amount": { "value": "6.5" },
"retraction_hop": { "value": "2" },
- "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
+ "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
@@ -130,4 +174,4 @@
"wall_0_inset": { "value": "0" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json
index 970d3a405d..5afbbce1da 100644
--- a/resources/definitions/ultimaker3_extended.def.json
+++ b/resources/definitions/ultimaker3_extended.def.json
@@ -2,42 +2,45 @@
"version": 2,
"name": "Ultimaker 3 Extended",
"inherits": "ultimaker3",
- "metadata": {
+ "metadata":
+ {
+ "visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "quality_definition": "ultimaker3",
- "visible": true,
"file_formats": "application/gzip;text/x-gcode",
"platform": "ultimaker3_platform.obj",
- "platform_texture": "Ultimaker3Extendedbackplate.png",
- "platform_offset": [0, 0, 0],
+ "bom_numbers": [
+ 9511
+ ],
+ "firmware_update_info":
+ {
+ "check_urls": [ "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version" ],
+ "id": 9511,
+ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
+ },
+ "first_start_actions": [ "DiscoverUM3Action" ],
"has_machine_quality": true,
"has_materials": true,
"has_variants": true,
- "preferred_variant_name": "AA 0.4",
- "variants_name": "Print core",
"machine_extruder_trains":
{
"0": "ultimaker3_extended_extruder_left",
"1": "ultimaker3_extended_extruder_right"
},
- "first_start_actions": [ "DiscoverUM3Action" ],
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ],
+ "platform_texture": "Ultimaker3Extendedbackplate.png",
+ "preferred_variant_name": "AA 0.4",
+ "quality_definition": "ultimaker3",
"supported_actions": [ "DiscoverUM3Action" ],
- "firmware_update_info": {
- "id": 9511,
- "check_urls":
- [
- "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version"
- ],
- "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
- },
- "bom_numbers": [
- 9511
- ]
+ "variants_name": "Print core"
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker 3 Extended" },
- "machine_height": { "default_value": 300 }
+ "overrides":
+ {
+ "machine_height": { "default_value": 300 },
+ "machine_name": { "default_value": "Ultimaker 3 Extended" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json
index e9afb3977e..c34dd4aadf 100644
--- a/resources/definitions/ultimaker_original.def.json
+++ b/resources/definitions/ultimaker_original.def.json
@@ -2,75 +2,84 @@
"version": 2,
"name": "Ultimaker Original",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
"visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 4,
"file_formats": "text/x-gcode",
"platform": "ultimaker_platform.3mf",
- "has_materials": true,
- "has_machine_quality": true,
- "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone", "ultimaker_petg_blue", "ultimaker_petg_grey", "ultimaker_petg_black", "ultimaker_petg_green", "ultimaker_petg_white", "ultimaker_petg_orange", "ultimaker_petg_silver", "ultimaker_petg_yellow", "ultimaker_petg_transparent", "ultimaker_petg_red_translucent", "ultimaker_petg_blue_translucent", "ultimaker_petg_green_translucent", "ultimaker_petg_yellow_fluorescent", "ultimaker_petg_red" ],
- "first_start_actions": ["UMOUpgradeSelection", "BedLevel"],
- "supported_actions": ["UMOUpgradeSelection", "BedLevel"],
- "machine_extruder_trains":
- {
- "0": "ultimaker_original_extruder_0"
- },
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "generic_bam",
+ "ultimaker_bam",
+ "generic_pva",
+ "ultimaker_pva",
+ "generic_tough_pla",
+ "ultimaker_tough_pla_black",
+ "ultimaker_tough_pla_green",
+ "ultimaker_tough_pla_red",
+ "ultimaker_tough_pla_white",
+ "generic_cffcpe",
+ "generic_cffpa",
+ "generic_gffcpe",
+ "generic_gffpa",
+ "structur3d_dap100silicone",
+ "ultimaker_petg_blue",
+ "ultimaker_petg_grey",
+ "ultimaker_petg_black",
+ "ultimaker_petg_green",
+ "ultimaker_petg_white",
+ "ultimaker_petg_orange",
+ "ultimaker_petg_silver",
+ "ultimaker_petg_yellow",
+ "ultimaker_petg_transparent",
+ "ultimaker_petg_red_translucent",
+ "ultimaker_petg_blue_translucent",
+ "ultimaker_petg_green_translucent",
+ "ultimaker_petg_yellow_fluorescent",
+ "ultimaker_petg_red"
+ ],
"firmware_file": "MarlinUltimaker-{baudrate}.hex",
- "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex"
+ "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex",
+ "first_start_actions": [
+ "UMOUpgradeSelection",
+ "BedLevel"
+ ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "machine_extruder_trains": { "0": "ultimaker_original_extruder_0" },
+ "supported_actions": [
+ "UMOUpgradeSelection",
+ "BedLevel"
+ ],
+ "weight": 4
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker Original" },
- "machine_width": {
- "default_value": 205
- },
- "machine_height": {
- "default_value": 200
- },
- "machine_depth": {
- "default_value": 205
- },
- "machine_center_is_zero": {
- "default_value": false
- },
+ "overrides":
+ {
+ "cool_fan_speed_0": { "value": 0 },
+ "gantry_height": { "value": "55" },
+ "infill_before_walls": { "value": "False" },
+ "layer_height_0": { "value": 0.3 },
+ "machine_center_is_zero": { "default_value": false },
+ "machine_depth": { "default_value": 205 },
+ "machine_end_gcode": { "value": "'M104 S0 ;extruder heater off' + ('\\nM140 S0 ;heated bed heater off' if machine_heated_bed else '') + '\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning'" },
+ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_head_with_fans_polygon":
{
"default_value": [
- [ -75, 35 ],
- [ -75, -18 ],
- [ 18, 35 ],
- [ 18, -18 ]
+ [-75, 35],
+ [-75, -18],
+ [18, 35],
+ [18, -18]
]
},
- "gantry_height": {
- "value": "55"
- },
- "machine_use_extruder_offset_to_offset_coords": {
- "default_value": true
- },
- "machine_gcode_flavor": {
- "default_value": "RepRap (Marlin/Sprinter)"
- },
- "machine_start_gcode": {
- "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Y50 F9000\n;Put printing message on LCD screen\nM117 Printing..."
- },
- "machine_end_gcode": {
- "value": "'M104 S0 ;extruder heater off' + ('\\nM140 S0 ;heated bed heater off' if machine_heated_bed else '') + '\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning'"
- },
- "infill_before_walls": {
- "value": "False"
- },
- "cool_fan_speed_0": {
- "value": 0
- },
- "layer_height_0": {
- "value": 0.3
- },
- "speed_slowdown_layers": {
- "value": 2
- }
+ "machine_height": { "default_value": 200 },
+ "machine_name": { "default_value": "Ultimaker Original" },
+ "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Y50 F9000\n;Put printing message on LCD screen\nM117 Printing..." },
+ "machine_use_extruder_offset_to_offset_coords": { "default_value": true },
+ "machine_width": { "default_value": 205 },
+ "speed_slowdown_layers": { "value": 2 }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json
index bda8a0ce12..59bc4fb8bb 100644
--- a/resources/definitions/ultimaker_original_dual.def.json
+++ b/resources/definitions/ultimaker_original_dual.def.json
@@ -2,74 +2,88 @@
"version": 2,
"name": "Ultimaker Original Dual Extrusion",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
"visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 4,
"file_formats": "text/x-gcode",
"platform": "ultimaker_platform.3mf",
- "has_materials": true,
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "generic_bam",
+ "ultimaker_bam",
+ "generic_pva",
+ "ultimaker_pva",
+ "generic_tough_pla",
+ "ultimaker_tough_pla_black",
+ "ultimaker_tough_pla_green",
+ "ultimaker_tough_pla_red",
+ "ultimaker_tough_pla_white",
+ "generic_cffcpe",
+ "generic_cffpa",
+ "generic_gffcpe",
+ "generic_gffpa",
+ "structur3d_dap100silicone",
+ "ultimaker_petg_blue",
+ "ultimaker_petg_grey",
+ "ultimaker_petg_black",
+ "ultimaker_petg_green",
+ "ultimaker_petg_white",
+ "ultimaker_petg_orange",
+ "ultimaker_petg_silver",
+ "ultimaker_petg_yellow",
+ "ultimaker_petg_transparent",
+ "ultimaker_petg_red_translucent",
+ "ultimaker_petg_blue_translucent",
+ "ultimaker_petg_green_translucent",
+ "ultimaker_petg_yellow_fluorescent",
+ "ultimaker_petg_red"
+ ],
+ "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex",
+ "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex",
+ "first_start_actions": [
+ "UMOUpgradeSelection",
+ "BedLevel"
+ ],
"has_machine_quality": true,
- "quality_definition": "ultimaker_original",
- "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone", "ultimaker_petg_blue", "ultimaker_petg_grey", "ultimaker_petg_black", "ultimaker_petg_green", "ultimaker_petg_white", "ultimaker_petg_orange", "ultimaker_petg_silver", "ultimaker_petg_yellow", "ultimaker_petg_transparent", "ultimaker_petg_red_translucent", "ultimaker_petg_blue_translucent", "ultimaker_petg_green_translucent", "ultimaker_petg_yellow_fluorescent", "ultimaker_petg_red" ],
+ "has_materials": true,
"machine_extruder_trains":
{
"0": "ultimaker_original_dual_1st",
"1": "ultimaker_original_dual_2nd"
},
- "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex",
- "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex",
- "first_start_actions": ["UMOUpgradeSelection", "BedLevel"],
- "supported_actions": ["UMOUpgradeSelection", "BedLevel"]
+ "quality_definition": "ultimaker_original",
+ "supported_actions": [
+ "UMOUpgradeSelection",
+ "BedLevel"
+ ],
+ "weight": 4
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker Original" },
- "machine_width": {
- "default_value": 205
- },
- "machine_height": {
- "default_value": 200
- },
- "machine_depth": {
- "default_value": 195
- },
- "machine_center_is_zero": {
- "default_value": false
- },
+ "overrides":
+ {
+ "gantry_height": { "value": "55" },
+ "machine_center_is_zero": { "default_value": false },
+ "machine_depth": { "default_value": 195 },
+ "machine_end_gcode": { "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" },
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_head_with_fans_polygon":
{
"default_value": [
- [ -75, 35 ],
- [ -75, -18 ],
- [ 18, 35 ],
- [ 18, -18 ]
+ [-75, 35],
+ [-75, -18],
+ [18, 35],
+ [18, -18]
]
},
- "gantry_height": {
- "value": "55"
- },
- "machine_use_extruder_offset_to_offset_coords": {
- "default_value": true
- },
- "machine_gcode_flavor": {
- "default_value": "RepRap (Marlin/Sprinter)"
- },
- "machine_start_gcode": {
- "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nT1 ;Switch to the 2nd extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F200 E-{switch_extruder_retraction_amount}\nT0 ;Switch to the 1st extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."
- },
- "machine_end_gcode": {
- "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
- },
- "machine_extruder_count": {
- "default_value": 2
- },
- "prime_tower_position_x": {
- "value": "195"
- },
- "prime_tower_position_y": {
- "value": "149"
- }
+ "machine_height": { "default_value": 200 },
+ "machine_name": { "default_value": "Ultimaker Original" },
+ "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nT1 ;Switch to the 2nd extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F200 E-{switch_extruder_retraction_amount}\nT0 ;Switch to the 1st extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." },
+ "machine_use_extruder_offset_to_offset_coords": { "default_value": true },
+ "machine_width": { "default_value": 205 },
+ "prime_tower_position_x": { "value": "195" },
+ "prime_tower_position_y": { "value": "149" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json
index 949e2e8d0d..26924a8ba6 100644
--- a/resources/definitions/ultimaker_original_plus.def.json
+++ b/resources/definitions/ultimaker_original_plus.def.json
@@ -2,31 +2,25 @@
"version": 2,
"name": "Ultimaker Original+",
"inherits": "ultimaker_original",
- "metadata": {
+ "metadata":
+ {
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "weight": 4,
"file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj",
+ "firmware_file": "MarlinUltimaker-UMOP-{baudrate}.hex",
+ "firmware_hbk_file": "MarlinUltimaker-UMOP-{baudrate}.hex",
+ "first_start_actions": [ "BedLevel" ],
+ "machine_extruder_trains": { "0": "ultimaker_original_plus_extruder_0" },
"platform_texture": "UltimakerPlusbackplate.png",
"quality_definition": "ultimaker_original",
- "first_start_actions": ["BedLevel"],
- "supported_actions": ["BedLevel"],
- "machine_extruder_trains":
- {
- "0": "ultimaker_original_plus_extruder_0"
- },
- "firmware_file": "MarlinUltimaker-UMOP-{baudrate}.hex",
- "firmware_hbk_file": "MarlinUltimaker-UMOP-{baudrate}.hex"
+ "supported_actions": [ "BedLevel" ],
+ "weight": 4
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker Original+" },
- "machine_heated_bed": {
- "default_value": true
- },
- "machine_max_feedrate_z": {
- "default_value": 30
- }
+ "overrides":
+ {
+ "machine_heated_bed": { "default_value": true },
+ "machine_max_feedrate_z": { "default_value": 30 },
+ "machine_name": { "default_value": "Ultimaker Original+" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json
index ce94981307..3505c9b0a9 100644
--- a/resources/definitions/ultimaker_s3.def.json
+++ b/resources/definitions/ultimaker_s3.def.json
@@ -2,78 +2,53 @@
"version": 2,
"name": "Ultimaker S3",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
+ "visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "visible": true,
"file_formats": "application/x-ufp;text/x-gcode",
"platform": "ultimaker_s3_platform.obj",
- "platform_texture": "UltimakerS3backplate.png",
- "platform_offset": [0, 0, 0],
+ "bom_numbers": [213482, 213483],
+ "exclude_materials": [
+ "generic_hips",
+ "generic_petg",
+ "structur3d_dap100silicone"
+ ],
+ "firmware_update_info":
+ {
+ "check_urls": [ "https://software.ultimaker.com/releases/firmware/213482/stable/um-update.swu.version" ],
+ "id": 213482,
+ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
+ },
+ "first_start_actions": [ "DiscoverUM3Action" ],
"has_machine_quality": true,
"has_materials": true,
"has_variant_buildplates": false,
"has_variants": true,
- "exclude_materials": [ "generic_hips", "generic_petg", "structur3d_dap100silicone" ],
- "preferred_variant_name": "AA 0.4",
- "preferred_quality_type": "normal",
- "variants_name": "Print core",
- "nozzle_offsetting_for_disallowed_areas": false,
"machine_extruder_trains":
{
"0": "ultimaker_s3_extruder_left",
"1": "ultimaker_s3_extruder_right"
},
- "first_start_actions": [ "DiscoverUM3Action" ],
+ "nozzle_offsetting_for_disallowed_areas": false,
+ "platform_offset": [
+ 0,
+ 0,
+ 0
+ ],
+ "platform_texture": "UltimakerS3backplate.png",
+ "preferred_quality_type": "fast",
+ "preferred_variant_name": "AA 0.4",
"supported_actions": [ "DiscoverUM3Action" ],
- "supports_usb_connection": false,
"supports_material_export": true,
- "weight": -1,
- "firmware_update_info": {
- "id": 213482,
- "check_urls": ["https://software.ultimaker.com/releases/firmware/213482/stable/um-update.swu.version"],
- "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
- },
- "bom_numbers": [
- 213482, 213483
- ]
+ "supports_usb_connection": false,
+ "variants_name": "Print core",
+ "weight": -1
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker S3" },
- "machine_width": { "default_value": 230 },
- "machine_depth": { "default_value": 190 },
- "machine_height": { "default_value": 200 },
- "machine_heated_bed": { "default_value": true },
- "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
- "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
- "machine_head_with_fans_polygon":
- {
- "default_value":
- [
- [ -41.4, -45.8 ],
- [ -41.4, 36.0 ],
- [ 63.3, 36.0 ],
- [ 63.3, -45.8 ]
- ]
- },
- "machine_gcode_flavor": { "default_value": "Griffin" },
- "machine_max_feedrate_x": { "default_value": 300 },
- "machine_max_feedrate_y": { "default_value": 300 },
- "machine_max_feedrate_z": { "default_value": 40 },
- "machine_acceleration": { "default_value": 3000 },
- "gantry_height": { "value": "55" },
- "machine_extruder_count": { "default_value": 2 },
- "extruder_prime_pos_abs": { "default_value": true },
- "machine_start_gcode": { "default_value": "" },
- "machine_end_gcode": { "default_value": "" },
- "prime_blob_enable": { "enabled": true, "default_value": false },
+ "overrides":
+ {
"acceleration_enabled": { "value": true },
- "speed_travel":
- {
- "maximum_value": "150",
- "value": "150"
- },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
@@ -85,30 +60,66 @@
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
+ "default_material_print_temperature": { "value": "200" },
+ "extruder_prime_pos_abs": { "default_value": true },
+ "gantry_height": { "value": "55" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
"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_acceleration": { "default_value": 3000 },
+ "machine_depth": { "default_value": 190 },
+ "machine_end_gcode": { "default_value": "" },
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_gcode_flavor": { "default_value": "Griffin" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-41.4, -45.8],
+ [-41.4, 36.0],
+ [63.3, 36.0],
+ [63.3, -45.8]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 200 },
+ "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" },
- "default_material_print_temperature": { "value": "200" },
+ "machine_name": { "default_value": "Ultimaker S3" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
+ "machine_start_gcode": { "default_value": "" },
+ "machine_width": { "default_value": 230 },
"multiple_mesh_overlap": { "value": "0" },
"optimize_wall_printing_order": { "value": "True" },
+ "prime_blob_enable":
+ {
+ "default_value": false,
+ "enabled": true
+ },
"prime_tower_enable": { "value": "True" },
"retraction_amount": { "value": "6.5" },
"retraction_hop": { "value": "2" },
- "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
+ "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
- "retraction_speed": {"value": "45" },
+ "retraction_speed": { "value": "45" },
"skin_overlap": { "value": "10" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
"speed_support": { "value": "speed_wall_0" },
"speed_support_interface": { "value": "speed_topbottom" },
"speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" },
+ "speed_travel":
+ {
+ "maximum_value": "150",
+ "value": "150"
+ },
"speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" },
"speed_wall_x": { "value": "speed_wall" },
@@ -120,4 +131,4 @@
"wall_0_inset": { "value": "0" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json
index a77148c2c4..2796d5351a 100644
--- a/resources/definitions/ultimaker_s5.def.json
+++ b/resources/definitions/ultimaker_s5.def.json
@@ -2,80 +2,53 @@
"version": 2,
"name": "Ultimaker S5",
"inherits": "ultimaker",
- "metadata": {
+ "metadata":
+ {
+ "visible": true,
"author": "Ultimaker",
"manufacturer": "Ultimaker B.V.",
- "visible": true,
"file_formats": "application/x-ufp;text/x-gcode",
"platform": "ultimaker_s5_platform.obj",
- "platform_texture": "UltimakerS5backplate.png",
- "platform_offset": [0, -30, -10],
+ "bom_numbers": [
+ 9051,
+ 214475,
+ 214476
+ ],
+ "firmware_update_info":
+ {
+ "check_urls": [ "https://software.ultimaker.com/releases/firmware/9051/stable/um-update.swu.version" ],
+ "id": 9051,
+ "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
+ },
+ "first_start_actions": [ "DiscoverUM3Action" ],
"has_machine_quality": true,
"has_materials": true,
"has_variant_buildplates": true,
"has_variants": true,
- "preferred_variant_name": "AA 0.4",
- "preferred_variant_buildplate_name": "Glass",
- "preferred_quality_type": "normal",
- "variants_name": "Print core",
- "nozzle_offsetting_for_disallowed_areas": false,
"machine_extruder_trains":
{
"0": "ultimaker_s5_extruder_left",
"1": "ultimaker_s5_extruder_right"
},
- "first_start_actions": [ "DiscoverUM3Action" ],
+ "nozzle_offsetting_for_disallowed_areas": false,
+ "platform_offset": [
+ 0,
+ -30,
+ -10
+ ],
+ "platform_texture": "UltimakerS5backplate.png",
+ "preferred_quality_type": "fast",
+ "preferred_variant_buildplate_name": "Glass",
+ "preferred_variant_name": "AA 0.4",
"supported_actions": [ "DiscoverUM3Action" ],
- "supports_usb_connection": false,
- "supports_network_connection": true,
"supports_material_export": true,
- "weight": -2,
- "firmware_update_info": {
- "id": 9051,
- "check_urls": ["https://software.ultimaker.com/releases/firmware/9051/stable/um-update.swu.version"],
- "update_url": "https://ultimaker.com/firmware?utm_source=cura&utm_medium=software&utm_campaign=fw-update"
- },
- "bom_numbers": [
- 9051, 214475, 214476
- ]
+ "supports_network_connection": true,
+ "supports_usb_connection": false,
+ "variants_name": "Print core",
+ "weight": -2
},
-
- "overrides": {
- "machine_name": { "default_value": "Ultimaker S5" },
- "machine_width": { "default_value": 330 },
- "machine_depth": { "default_value": 240 },
- "machine_height": { "default_value": 300 },
- "machine_heated_bed": { "default_value": true },
- "machine_heated_build_volume": { "default_value": true },
- "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
- "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
- "machine_head_with_fans_polygon":
- {
- "default_value":
- [
- [ -41.4, -45.8 ],
- [ -41.4, 36.0 ],
- [ 63.3, 36.0 ],
- [ 63.3, -45.8 ]
- ]
- },
- "machine_gcode_flavor": { "default_value": "Griffin" },
- "machine_max_feedrate_x": { "default_value": 300 },
- "machine_max_feedrate_y": { "default_value": 300 },
- "machine_max_feedrate_z": { "default_value": 40 },
- "machine_acceleration": { "default_value": 3000 },
- "gantry_height": { "value": "55" },
- "machine_extruder_count": { "default_value": 2 },
- "extruder_prime_pos_abs": { "default_value": true },
- "machine_start_gcode": { "default_value": "" },
- "machine_end_gcode": { "default_value": "" },
- "prime_blob_enable": { "enabled": true, "default_value": false },
-
- "speed_travel":
- {
- "maximum_value": "150",
- "value": "150"
- },
+ "overrides":
+ {
"acceleration_enabled": { "value": true },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 3500)" },
"acceleration_print": { "value": "3500" },
@@ -85,33 +58,72 @@
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 3500)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" },
"brim_width": { "value": "3" },
+ "build_volume_temperature": { "maximum_value": 50 },
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
+ "default_material_print_temperature": { "value": "200" },
+ "extruder_prime_pos_abs": { "default_value": true },
+ "gantry_height": { "value": "55" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
"infill_wipe_dist": { "value": "0" },
"jerk_enabled": { "value": "True" },
"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_acceleration": { "default_value": 3000 },
+ "machine_depth": { "default_value": 240 },
+ "machine_end_gcode": { "default_value": "" },
+ "machine_extruder_count": { "default_value": 2 },
+ "machine_gcode_flavor": { "default_value": "Griffin" },
+ "machine_head_with_fans_polygon":
+ {
+ "default_value": [
+ [-41.4, -45.8],
+ [-41.4, 36.0],
+ [63.3, 36.0],
+ [63.3, -45.8]
+ ]
+ },
+ "machine_heated_bed": { "default_value": true },
+ "machine_heated_build_volume": { "default_value": true },
+ "machine_height": { "default_value": 300 },
+ "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" },
- "default_material_print_temperature": { "value": "200" },
+ "machine_name": { "default_value": "Ultimaker S5" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
+ "machine_start_gcode": { "default_value": "" },
+ "machine_width": { "default_value": 330 },
"multiple_mesh_overlap": { "value": "0" },
+ "optimize_wall_printing_order": { "value": "True" },
+ "prime_blob_enable":
+ {
+ "default_value": false,
+ "enabled": true
+ },
"prime_tower_enable": { "value": "True" },
"retraction_amount": { "value": "6.5" },
- "retraction_combing": { "value": "'no_outer_surfaces'"},
+ "retraction_combing": { "value": "'no_outer_surfaces'" },
"retraction_hop": { "value": "2" },
- "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
+ "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
- "retraction_speed": {"value": "45" },
+ "retraction_speed": { "value": "45" },
"skin_overlap": { "value": "10" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
"speed_support": { "value": "speed_wall_0" },
"speed_support_interface": { "value": "speed_topbottom" },
"speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" },
+ "speed_travel":
+ {
+ "maximum_value": "150",
+ "value": "150"
+ },
"speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" },
"speed_wall_x": { "value": "speed_wall" },
@@ -121,8 +133,6 @@
"top_bottom_thickness": { "value": "1" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" },
- "optimize_wall_printing_order": { "value": "True" },
- "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" },
- "build_volume_temperature": { "maximum_value": 50 }
+ "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
}
-}
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A20M_1.def.json b/resources/extruders/Geeetech_Dual_Extruder_0.def.json
similarity index 51%
rename from resources/extruders/geeetech_A20M_1.def.json
rename to resources/extruders/Geeetech_Dual_Extruder_0.def.json
index b0c00f4144..c9ce9b40c5 100644
--- a/resources/extruders/geeetech_A20M_1.def.json
+++ b/resources/extruders/Geeetech_Dual_Extruder_0.def.json
@@ -1,19 +1,19 @@
-{
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20M",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 0,
- "maximum_value": "1"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
+{
+ "version": 2,
+ "name": "E0",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Dual_Extruder",
+ "position": "0"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 0,
+ "maximum_value": "1"
+ },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A10M_2.def.json b/resources/extruders/Geeetech_Dual_Extruder_1.def.json
similarity index 51%
rename from resources/extruders/geeetech_A10M_2.def.json
rename to resources/extruders/Geeetech_Dual_Extruder_1.def.json
index 59c8d36aab..39410d2815 100644
--- a/resources/extruders/geeetech_A10M_2.def.json
+++ b/resources/extruders/Geeetech_Dual_Extruder_1.def.json
@@ -1,19 +1,19 @@
-{
- "version": 2,
- "name": "Extruder 2",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10M",
- "position": "1"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 1,
- "maximum_value": "1"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
+{
+ "version": 2,
+ "name": "E1",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Dual_Extruder",
+ "position": "1"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 1,
+ "maximum_value": "1"
+ },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A10T_1.def.json b/resources/extruders/Geeetech_Multi_Extruder_0.def.json
similarity index 51%
rename from resources/extruders/geeetech_A10T_1.def.json
rename to resources/extruders/Geeetech_Multi_Extruder_0.def.json
index 240a71ccc4..970e7f242b 100644
--- a/resources/extruders/geeetech_A10T_1.def.json
+++ b/resources/extruders/Geeetech_Multi_Extruder_0.def.json
@@ -1,19 +1,19 @@
-{
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10T",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 0,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
+{
+ "version": 2,
+ "name": "E0",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Multi_Extruder",
+ "position": "0"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 0,
+ "maximum_value": "2"
+ },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A10T_2.def.json b/resources/extruders/Geeetech_Multi_Extruder_1.def.json
similarity index 51%
rename from resources/extruders/geeetech_A10T_2.def.json
rename to resources/extruders/Geeetech_Multi_Extruder_1.def.json
index cc93fdd416..01910b03d9 100644
--- a/resources/extruders/geeetech_A10T_2.def.json
+++ b/resources/extruders/Geeetech_Multi_Extruder_1.def.json
@@ -1,19 +1,19 @@
-{
- "version": 2,
- "name": "Extruder 2",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10T",
- "position": "1"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 1,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
+{
+ "version": 2,
+ "name": "E1",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Multi_Extruder",
+ "position": "1"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 1,
+ "maximum_value": "2"
+ },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A10T_3.def.json b/resources/extruders/Geeetech_Multi_Extruder_2.def.json
similarity index 51%
rename from resources/extruders/geeetech_A10T_3.def.json
rename to resources/extruders/Geeetech_Multi_Extruder_2.def.json
index ddee8fcd3b..a46a852925 100644
--- a/resources/extruders/geeetech_A10T_3.def.json
+++ b/resources/extruders/Geeetech_Multi_Extruder_2.def.json
@@ -1,19 +1,19 @@
-{
- "version": 2,
- "name": "Extruder 3",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10T",
- "position": "2"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 2,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
+{
+ "version": 2,
+ "name": "E2",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Multi_Extruder",
+ "position": "2"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 2,
+ "maximum_value": "2"
+ },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_a30_extruder_0.def.json b/resources/extruders/Geeetech_Single_Extruder.def.json
similarity index 62%
rename from resources/extruders/geeetech_a30_extruder_0.def.json
rename to resources/extruders/Geeetech_Single_Extruder.def.json
index 90cb496877..784d852f09 100644
--- a/resources/extruders/geeetech_a30_extruder_0.def.json
+++ b/resources/extruders/Geeetech_Single_Extruder.def.json
@@ -2,14 +2,14 @@
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_a30",
+ "metadata":
+ {
+ "machine": "Geeetech_Base_Single_Extruder",
"position": "0"
},
-
- "overrides": {
+ "overrides":
+ {
"extruder_nr": { "default_value": 0 },
- "machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
-}
+}
\ No newline at end of file
diff --git a/resources/extruders/fablabbcn_0.def.json b/resources/extruders/fablabbcn_0.def.json
new file mode 100644
index 0000000000..64f2f820d0
--- /dev/null
+++ b/resources/extruders/fablabbcn_0.def.json
@@ -0,0 +1,16 @@
+{
+ "version": 2,
+ "name": "Extruder",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "fablabbcn_pasteprinter",
+ "position": "0"
+ },
+ "overrides":
+ {
+ "extruder_nr": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 3.0 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/geeetech_A10M_1.def.json b/resources/extruders/geeetech_A10M_1.def.json
deleted file mode 100644
index b3c87489e9..0000000000
--- a/resources/extruders/geeetech_A10M_1.def.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10M",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 0,
- "maximum_value": "1"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A10_1.def.json b/resources/extruders/geeetech_A10_1.def.json
deleted file mode 100644
index bcf889ab43..0000000000
--- a/resources/extruders/geeetech_A10_1.def.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A10",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": { "default_value": 0 },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A20M_2.def.json b/resources/extruders/geeetech_A20M_2.def.json
deleted file mode 100644
index 51dd29723a..0000000000
--- a/resources/extruders/geeetech_A20M_2.def.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 2",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20M",
- "position": "1"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 1,
- "maximum_value": "1"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A20T_1.def.json b/resources/extruders/geeetech_A20T_1.def.json
deleted file mode 100644
index 4880f2147b..0000000000
--- a/resources/extruders/geeetech_A20T_1.def.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20T",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 0,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A20T_2.def.json b/resources/extruders/geeetech_A20T_2.def.json
deleted file mode 100644
index d001cbc291..0000000000
--- a/resources/extruders/geeetech_A20T_2.def.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 2",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20T",
- "position": "1"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 1,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A20T_3.def.json b/resources/extruders/geeetech_A20T_3.def.json
deleted file mode 100644
index db60908cb9..0000000000
--- a/resources/extruders/geeetech_A20T_3.def.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 3",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20T",
- "position": "2"
- },
-
- "overrides": {
- "extruder_nr": {
- "default_value": 2,
- "maximum_value": "2"
- },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_A20_1.def.json b/resources/extruders/geeetech_A20_1.def.json
deleted file mode 100644
index ce47abb402..0000000000
--- a/resources/extruders/geeetech_A20_1.def.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_A20",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": { "default_value": 0 },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/extruders/geeetech_Mizar_S_1.def.json b/resources/extruders/geeetech_Mizar_S_1.def.json
deleted file mode 100644
index da4440cd87..0000000000
--- a/resources/extruders/geeetech_Mizar_S_1.def.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-
- "version": 2,
- "name": "Extruder 1",
- "inherits": "fdmextruder",
- "metadata": {
- "machine": "geeetech_Mizar_S",
- "position": "0"
- },
-
- "overrides": {
- "extruder_nr": { "default_value": 0 },
- "machine_nozzle_size": { "default_value": 0.4 },
- "material_diameter": { "default_value": 1.75 }
-
- }
-}
diff --git a/resources/qml/ColorDialog.qml b/resources/qml/ColorDialog.qml
index e5216a3404..99d46ed327 100644
--- a/resources/qml/ColorDialog.qml
+++ b/resources/qml/ColorDialog.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2022 Ultimaker B.V.
+// Copyright (c) 2022 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.15
@@ -6,8 +6,8 @@ import QtQuick.Controls 2.2
import QtQuick.Window 2.1
import QtQuick.Layouts 1.1
-import UM 1.5 as UM
-import Cura 1.1 as Cura
+import UM 1.7 as UM
+import Cura 1.7 as Cura
/*
@@ -28,8 +28,11 @@ UM.Dialog
// however with the current implementation of the dialog this is not possible, so instead we calculate
// the size of the dialog ourselves.
// Ugly workaround for windows having overlapping elements due to incorrect dialog width
- minimumWidth: content.width + (Qt.platform.os == "windows" ? 4 * margin : 2 * margin)
- minimumHeight: content.height + footer.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin)
+ minimumWidth: content.width + (Qt.platform.os === "windows" ? 4 * margin : 2 * margin)
+ minimumHeight: {
+ const footerHeight = Math.max(okButton.height, cancelButton.height);
+ return content.height + footerHeight + (Qt.platform.os === "windows" ? 5 * margin : 3 * margin);
+ }
property alias color: colorInput.text
property var swatchColors: [
@@ -119,7 +122,7 @@ UM.Dialog
text = `#${text}`;
}
}
- validator: RegularExpressionValidator { regularExpression: /^#([a-fA-F0-9]{0,6})$/ }
+ validator: UM.HexColorValidator {}
}
Rectangle
@@ -136,10 +139,12 @@ UM.Dialog
rightButtons:
[
Cura.TertiaryButton {
+ id: cancelButton
text: catalog.i18nc("@action:button", "Cancel")
onClicked: base.close()
},
Cura.PrimaryButton {
+ id: okButton
text: catalog.i18nc("@action:button", "OK")
onClicked: base.accept()
}
diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml
index 204e9a5469..9a760bafc9 100644
--- a/resources/qml/ExtruderButton.qml
+++ b/resources/qml/ExtruderButton.qml
@@ -12,17 +12,14 @@ UM.ToolbarButton
id: base
property var extruder
-
- text: catalog.i18ncp("@label %1 is filled in with the name of an extruder", "Print Selected Model with %1", "Print Selected Models with %1", UM.Selection.selectionCount).arg(extruder.name)
-
- checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1
- enabled: UM.Selection.hasSelection && extruder.stack.isEnabled
+ property var extruderNumberFont: UM.Theme.getFont("small_emphasis")
toolItem: ExtruderIcon
{
materialColor: extruder.color
extruderEnabled: extruder.stack.isEnabled
iconVariant: "default"
+ font: extruderNumberFont
property int index: extruder.index
}
diff --git a/resources/qml/ExtruderIcon.qml b/resources/qml/ExtruderIcon.qml
index 718f1bcd87..3231d924ee 100644
--- a/resources/qml/ExtruderIcon.qml
+++ b/resources/qml/ExtruderIcon.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2021 Ultimaker B.V.
+// Copyright (c) 2022 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.11
@@ -12,8 +12,9 @@ Item
property color materialColor
property alias textColor: extruderNumberText.color
property bool extruderEnabled: true
- property var iconSize: UM.Theme.getSize("extruder_icon").width
+ property int iconSize: UM.Theme.getSize("extruder_icon").width
property string iconVariant: "medium"
+ property alias font: extruderNumberText.font
implicitWidth: iconSize
implicitHeight: iconSize
@@ -35,7 +36,6 @@ Item
}
UM.ColorImage
{
- id: mainIcon
anchors.fill: parent
width: iconSize
height: iconSize
@@ -47,12 +47,14 @@ Item
UM.Label
{
id: extruderNumberText
- anchors.centerIn: parent
- text: index + 1
- font: UM.Theme.getFont("small_emphasis")
width: contentWidth
height: contentHeight
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.right: parent.right
horizontalAlignment: Text.AlignHCenter
+ text: (index + 1).toString()
+ font: UM.Theme.getFont("small_emphasis")
}
}
}
diff --git a/resources/qml/MachineSettings/ComboBoxWithOptions.qml b/resources/qml/MachineSettings/ComboBoxWithOptions.qml
index 4ff7cf7092..7ba7c0f701 100644
--- a/resources/qml/MachineSettings/ComboBoxWithOptions.qml
+++ b/resources/qml/MachineSettings/ComboBoxWithOptions.qml
@@ -68,18 +68,27 @@ UM.TooltipArea
function updateModel()
{
clear()
- // Options come in as a string-representation of an OrderedDict
- if(propertyProvider.properties.options)
+
+ if(!propertyProvider.properties.options)
{
- var options = propertyProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/);
- if(options)
+ return
+ }
+
+ if (typeof propertyProvider.properties["options"] === "string")
+ {
+ return
+ }
+
+
+ for (var i = 0; i < propertyProvider.properties["options"].keys().length; i++)
+ {
+ var key = propertyProvider.properties["options"].keys()[i]
+ var value = propertyProvider.properties["options"][key]
+ append({ text: value, code: key })
+
+ if (propertyProvider.properties.value === key)
{
- options = options[1].split("), (");
- for(var i = 0; i < options.length; i++)
- {
- var option = options[i].substring(1, options[i].length - 1).split("', '");
- append({ text: option[1], value: option[0] });
- }
+ comboBox.currentIndex = i
}
}
}
@@ -123,7 +132,7 @@ UM.TooltipArea
onActivated:
{
var newValue = model.get(index).value
- if (propertyProvider.properties.value != newValue)
+ if (propertyProvider.properties.value !== newValue && newValue !== undefined)
{
if (setValueFunction !== null)
{
diff --git a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
index 2484adb912..64beeb9834 100644
--- a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
+++ b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
@@ -59,7 +59,7 @@ UM.TooltipArea
UM.SettingPropertyProvider
{
id: propertyProvider
- watchedProperties: [ "value", "description" ]
+ watchedProperties: [ "value", "description", "validationState" ]
}
UM.Label
diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml
index e53aa693e1..05407e6e0e 100644
--- a/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml
+++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml
@@ -67,6 +67,16 @@ Item
top: parent.top
}
visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended
+ height: {
+ const height = base.height - (customPrintSetup.mapToItem(null, 0, 0).y + buttonRow.height + UM.Theme.getSize("default_margin").height);
+ const maxHeight = UM.Preferences.getValue("view/settings_list_height");
+ return Math.min(implicitHeight, height, maxHeight);
+ }
+
+ function onModeChanged()
+ {
+ currentModeIndex = PrintSetupSelectorContents.Mode.Custom;
+ }
}
CustomPrintSetup
@@ -116,13 +126,21 @@ Item
width: parent.width
height: UM.Theme.getSize("default_lining").height
color: UM.Theme.getColor("lining")
+ visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom
}
Item
{
id: buttonRow
property real padding: UM.Theme.getSize("default_margin").width
- height: recommendedButton.height + 2 * padding + (draggableArea.visible ? draggableArea.height : 0)
+ height:
+ {
+ if (currentModeIndex == PrintSetupSelectorContents.Mode.Custom)
+ {
+ return recommendedButton.height + 2 * padding + (draggableArea.visible ? draggableArea.height : 0)
+ }
+ return 0
+ }
anchors
{
@@ -145,25 +163,6 @@ Item
onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Recommended
}
- Cura.SecondaryButton
- {
- id: customSettingsButton
- anchors.top: parent.top
- anchors.right: parent.right
- anchors.margins: UM.Theme.getSize("default_margin").width
- leftPadding: UM.Theme.getSize("default_margin").width
- rightPadding: UM.Theme.getSize("default_margin").width
- text: catalog.i18nc("@button", "Custom")
- iconSource: UM.Theme.getIcon("ChevronSingleRight")
- isIconOnRightSide: true
- visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended
- onClicked:
- {
- currentModeIndex = PrintSetupSelectorContents.Mode.Custom
- updateDragPosition();
- }
- }
-
//Invisible area at the bottom with which you can resize the panel.
MouseArea
{
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml
index 8d31d6292d..2183ef7d5e 100644
--- a/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml
@@ -1,89 +1,37 @@
-// Copyright (c) 2018 Ultimaker B.V.
+// Copyright (c) 2022 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
+import QtQuick.Layouts 1.3
import UM 1.5 as UM
-import Cura 1.0 as Cura
+import Cura 1.7 as Cura
-//
-// Adhesion
-//
-Item
+RecommendedSettingSection
{
id: enableAdhesionRow
- height: enableAdhesionContainer.height
- property real labelColumnWidth: Math.round(width / 3)
+ title: catalog.i18nc("@label", "Adhesion")
+ icon: UM.Theme.getIcon("Adhesion")
+ enableSectionSwitchVisible: platformAdhesionType.properties.enabled === "True"
+ enableSectionSwitchChecked: platformAdhesionType.properties.value !== "skirt" && platformAdhesionType.properties.value !== "none"
+ enableSectionSwitchEnabled: recommendedPrintSetup.settingsEnabled
+ tooltipText: catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards.")
+
property var curaRecommendedMode: Cura.RecommendedMode {}
- Cura.IconWithText
+ property UM.SettingPropertyProvider platformAdhesionType: UM.SettingPropertyProvider
{
- id: enableAdhesionRowTitle
- anchors.top: parent.top
- anchors.left: parent.left
- source: UM.Theme.getIcon("Adhesion")
- text: catalog.i18nc("@label", "Adhesion")
- font: UM.Theme.getFont("medium")
- width: labelColumnWidth
- iconSize: UM.Theme.getSize("medium_button_icon").width
- }
-
- Item
- {
- id: enableAdhesionContainer
- height: enableAdhesionCheckBox.height
-
- anchors
- {
- left: enableAdhesionRowTitle.right
- right: parent.right
- verticalCenter: enableAdhesionRowTitle.verticalCenter
- }
-
- UM.CheckBox
- {
- id: enableAdhesionCheckBox
- anchors.verticalCenter: parent.verticalCenter
-
- //: Setting enable printing build-plate adhesion helper checkbox
- enabled: recommendedPrintSetup.settingsEnabled
-
- visible: platformAdhesionType.properties.enabled == "True"
- checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none"
-
- MouseArea
- {
- id: adhesionMouseArea
- anchors.fill: parent
- hoverEnabled: true
- // propagateComposedEvents used on adhesionTooltipMouseArea does not work with Controls Components.
- // It only works with other MouseAreas, so this is required
- onClicked: curaRecommendedMode.setAdhesion(!parent.checked)
- }
- }
- }
-
- MouseArea
- {
- id: adhesionTooltipMouseArea
- anchors.fill: parent
- propagateComposedEvents: true
- hoverEnabled: true
-
- onEntered:base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0),
- catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards."));
- onExited: base.hideTooltip()
- }
-
- UM.SettingPropertyProvider
- {
- id: platformAdhesionType
containerStack: Cura.MachineManager.activeMachine
removeUnusedValue: false //Doesn't work with settings that are resolved.
key: "adhesion_type"
watchedProperties: [ "value", "resolve", "enabled" ]
storeIndex: 0
}
+
+ function onEnableSectionChanged(state)
+ {
+ curaRecommendedMode.setAdhesion(state)
+ }
}
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml
deleted file mode 100644
index 0317cb7814..0000000000
--- a/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml
+++ /dev/null
@@ -1,277 +0,0 @@
-// Copyright (c) 2022 Ultimaker B.V.
-// Cura is released under the terms of the LGPLv3 or higher.
-
-import QtQuick 2.7
-import QtQuick.Controls 2.15
-
-import UM 1.5 as UM
-import Cura 1.0 as Cura
-
-
-//
-// Infill
-//
-Item
-{
- id: infillRow
- height: childrenRect.height
-
- property real labelColumnWidth: Math.round(width / 3)
-
- // Create a binding to update the icon when the infill density changes
- Binding
- {
- target: infillRowTitle
- property: "source"
- value:
- {
- var density = parseInt(infillDensity.properties.value)
- if (parseInt(infillSteps.properties.value) != 0)
- {
- return UM.Theme.getIcon("InfillGradual")
- }
- if (density <= 0)
- {
- return UM.Theme.getIcon("Infill0")
- }
- if (density < 40)
- {
- return UM.Theme.getIcon("Infill3")
- }
- if (density < 90)
- {
- return UM.Theme.getIcon("Infill2")
- }
- return UM.Theme.getIcon("Infill100")
- }
- }
-
- // We use a binding to make sure that after manually setting infillSlider.value it is still bound to the property provider
- Binding
- {
- target: infillSlider
- property: "value"
- value: {
- // The infill slider has a max value of 100. When it is given a value > 100 onValueChanged updates the setting to be 100.
- // When changing to an intent with infillDensity > 100, it would always be clamped to 100.
- // This will force the slider to ignore the first onValueChanged for values > 100 so higher values can be set.
- var density = parseInt(infillDensity.properties.value)
- if (density > 100) {
- infillSlider.ignoreValueChange = true
- }
-
- return density
- }
- }
-
- // Here are the elements that are shown in the left column
- Cura.IconWithText
- {
- id: infillRowTitle
- anchors.top: parent.top
- anchors.left: parent.left
- source: UM.Theme.getIcon("Infill1")
- text: catalog.i18nc("@label", "Infill") + " (%)"
- font: UM.Theme.getFont("medium")
- width: labelColumnWidth
- iconSize: UM.Theme.getSize("medium_button_icon").width
- tooltipText: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")
- }
-
- Item
- {
- id: infillSliderContainer
- height: childrenRect.height
-
- anchors
- {
- left: infillRowTitle.right
- right: parent.right
- verticalCenter: infillRowTitle.verticalCenter
- }
-
- Slider
- {
- id: infillSlider
-
- property var ignoreValueChange: false
-
- width: parent.width
- height: UM.Theme.getSize("print_setup_slider_handle").height // The handle is the widest element of the slider
-
- from: 0
- to: 100
- stepSize: 1
-
- // disable slider when gradual support is enabled
- enabled: parseInt(infillSteps.properties.value) == 0
-
- // set initial value from stack
- value: parseInt(infillDensity.properties.value)
-
- //Draw line
- background: Rectangle
- {
- id: backgroundLine
- height: UM.Theme.getSize("print_setup_slider_groove").height
- width: parent.width - UM.Theme.getSize("print_setup_slider_handle").width
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.verticalCenter: parent.verticalCenter
- color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable")
-
- Repeater
- {
- id: repeater
- anchors.fill: parent
- model: infillSlider.to / infillSlider.stepSize + 1
-
- Rectangle
- {
- color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable")
- implicitWidth: UM.Theme.getSize("print_setup_slider_tickmarks").width
- implicitHeight: UM.Theme.getSize("print_setup_slider_tickmarks").height
- anchors.verticalCenter: parent.verticalCenter
-
- // Do not use Math.round otherwise the tickmarks won't be aligned
- // (space between steps) * index of step
- x: (backgroundLine.width / (repeater.count - 1)) * index
-
- radius: Math.round(implicitWidth / 2)
- visible: (index % 10) == 0 // Only show steps of 10%
-
- UM.Label
- {
- text: index
- visible: (index % 20) == 0 // Only show steps of 20%
- anchors.horizontalCenter: parent.horizontalCenter
- y: UM.Theme.getSize("thin_margin").height
- color: UM.Theme.getColor("quality_slider_available")
- }
- }
- }
- }
-
- handle: Rectangle
- {
- id: handleButton
- x: infillSlider.leftPadding + infillSlider.visualPosition * (infillSlider.availableWidth - width)
- y: infillSlider.topPadding + infillSlider.availableHeight / 2 - height / 2
- color: infillSlider.enabled ? UM.Theme.getColor("primary") : UM.Theme.getColor("quality_slider_unavailable")
- implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width
- implicitHeight: implicitWidth
- radius: Math.round(implicitWidth / 2)
- border.color: UM.Theme.getColor("slider_groove_fill")
- border.width: UM.Theme.getSize("default_lining").height
- }
-
- Connections
- {
- target: infillSlider
- function onValueChanged()
- {
- if (infillSlider.ignoreValueChange)
- {
- infillSlider.ignoreValueChange = false
- return
- }
-
- // Don't update if the setting value, if the slider has the same value
- if (parseInt(infillDensity.properties.value) == infillSlider.value)
- {
- return
- }
-
- // Round the slider value to the nearest multiple of 10 (simulate step size of 10)
- var roundedSliderValue = Math.round(infillSlider.value / 10) * 10
-
- // Update the slider value to represent the rounded value
- infillSlider.value = roundedSliderValue
-
- // Update value only if the Recommended mode is Active,
- // Otherwise if I change the value in the Custom mode the Recommended view will try to repeat
- // same operation
- const active_mode = UM.Preferences.getValue("cura/active_mode")
-
- if (visible // Workaround: 'visible' is checked because on startup in Windows it spuriously gets an 'onValueChanged' with value '0' if this isn't checked.
- && (active_mode == 0 || active_mode == "simple"))
- {
- Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", roundedSliderValue)
- Cura.MachineManager.resetSettingForAllExtruders("infill_line_distance")
- }
- }
- }
- }
- }
-
- // Gradual Support Infill Checkbox
- UM.CheckBox
- {
- id: enableGradualInfillCheckBox
- property alias _hovered: enableGradualInfillMouseArea.containsMouse
-
- anchors.top: infillSliderContainer.bottom
- anchors.topMargin: UM.Theme.getSize("wide_margin").height
- anchors.left: infillSliderContainer.left
-
- text: catalog.i18nc("@label", "Gradual infill")
- enabled: recommendedPrintSetup.settingsEnabled
- visible: infillSteps.properties.enabled == "True"
- checked: parseInt(infillSteps.properties.value) > 0
-
- MouseArea
- {
- id: enableGradualInfillMouseArea
-
- anchors.fill: parent
- hoverEnabled: true
- enabled: true
-
- property var previousInfillDensity: parseInt(infillDensity.properties.value)
-
- onClicked:
- {
- // Set to 90% only when enabling gradual infill
- var newInfillDensity;
- if (parseInt(infillSteps.properties.value) == 0)
- {
- previousInfillDensity = parseInt(infillDensity.properties.value)
- newInfillDensity = 90
- } else {
- newInfillDensity = previousInfillDensity
- }
- Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", String(newInfillDensity))
-
- var infill_steps_value = 0
- if (parseInt(infillSteps.properties.value) == 0)
- {
- infill_steps_value = 5
- }
-
- Cura.MachineManager.setSettingForAllExtruders("gradual_infill_steps", "value", infill_steps_value)
- }
-
- onEntered: base.showTooltip(enableGradualInfillCheckBox, Qt.point(-infillSliderContainer.x - UM.Theme.getSize("thick_margin").width, 0),
- catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."))
-
- onExited: base.hideTooltip()
- }
- }
-
- UM.SettingPropertyProvider
- {
- id: infillDensity
- containerStackId: Cura.MachineManager.activeStackId
- key: "infill_sparse_density"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
-
- UM.SettingPropertyProvider
- {
- id: infillSteps
- containerStackId: Cura.MachineManager.activeStackId
- key: "gradual_infill_steps"
- watchedProperties: ["value", "enabled"]
- storeIndex: 0
- }
-}
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml
index 37517709a9..80e171bed4 100644
--- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml
@@ -1,33 +1,42 @@
-//Copyright (c) 2022 Ultimaker B.V.
+// Copyright (c) 2022 UltiMaker
//Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
+import QtQuick.Controls 2.15
import QtQuick.Layouts 1.1
import UM 1.6 as UM
import Cura 1.6 as Cura
import ".."
-Item
+ScrollView
{
id: recommendedPrintSetup
- height: childrenRect.height + 2 * padding
+ implicitHeight: settingsColumn.height + 2 * padding
property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1
- property real padding: UM.Theme.getSize("default_margin").width
- ColumnLayout
- {
- spacing: UM.Theme.getSize("default_margin").height
+ padding: UM.Theme.getSize("default_margin").width
+ function onModeChanged() {}
+
+ ScrollBar.vertical: UM.ScrollBar {
+ id: scroll
anchors
{
- left: parent.left
- right: parent.right
top: parent.top
- margins: parent.padding
+ right: parent.right
+ bottom: parent.bottom
}
+ }
+
+ Column
+ {
+ id: settingsColumn
+ spacing: UM.Theme.getSize("default_margin").height
+
+ width: recommendedPrintSetup.width - 2 * recommendedPrintSetup.padding - (scroll.visible ? scroll.width : 0)
// TODO
property real firstColumnWidth: Math.round(width / 3)
@@ -47,7 +56,6 @@ Item
RecommendedResolutionSelector
{
id: recommendedResolutionSelector
- Layout.fillWidth: true
width: parent.width
}
@@ -55,55 +63,72 @@ Item
{
width: parent.width
visible: !recommendedResolutionSelector.visible
- Layout.fillWidth: true
}
+ Item { height: UM.Theme.getSize("default_margin").height } // Spacer
ProfileWarningReset
{
width: parent.width
- Layout.fillWidth: true
- Layout.topMargin: UM.Theme.getSize("default_margin").height
- Layout.bottomMargin: UM.Theme.getSize("thin_margin").height
}
+ Item { height: UM.Theme.getSize("thin_margin").height + UM.Theme.getSize("narrow_margin").height} // Spacer
+
//Line between the sections.
Rectangle
{
width: parent.width
height: UM.Theme.getSize("default_lining").height
- Layout.topMargin: UM.Theme.getSize("narrow_margin").height
- Layout.bottomMargin: UM.Theme.getSize("narrow_margin").height
- Layout.fillWidth: true
color: UM.Theme.getColor("lining")
}
- UM.Label
- {
- text: catalog.i18nc("@label", "Print settings")
- font: UM.Theme.getFont("medium")
- }
+ Item { height: UM.Theme.getSize("narrow_margin").height } //Spacer
- RecommendedInfillDensitySelector
+ Column
{
+ id: settingColumn
width: parent.width
- labelColumnWidth: parent.firstColumnWidth
- Layout.fillWidth: true
- Layout.rightMargin: UM.Theme.getSize("default_margin").width
- }
+ spacing: UM.Theme.getSize("thin_margin").height
- RecommendedSupportSelector
- {
- width: parent.width
- labelColumnWidth: parent.firstColumnWidth
- Layout.fillWidth: true
- }
+ Item
+ {
+ id: recommendedPrintSettingsHeader
+ height: childrenRect.height
+ width: parent.width
+ UM.Label
+ {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ text: catalog.i18nc("@label", "Recommended print settings")
+ font: UM.Theme.getFont("medium")
+ }
- RecommendedAdhesionSelector
- {
- width: parent.width
- labelColumnWidth: parent.firstColumnWidth
- Layout.fillWidth: true
+ Cura.SecondaryButton
+ {
+ id: customSettingsButton
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ text: catalog.i18nc("@button", "Show Custom")
+ textFont: UM.Theme.getFont("medium_bold")
+ outlineColor: "transparent"
+ onClicked: onModeChanged()
+ }
+ }
+
+ RecommendedStrengthSelector
+ {
+ width: parent.width
+ }
+
+ RecommendedSupportSelector
+ {
+ width: parent.width
+ }
+
+ RecommendedAdhesionSelector
+ {
+ width: parent.width
+ }
}
}
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml
new file mode 100644
index 0000000000..ceebc3808e
--- /dev/null
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingItem.qml
@@ -0,0 +1,90 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 2.10
+
+import UM 1.5 as UM
+import Cura 1.7 as Cura
+
+
+Item
+{
+ id: settingItem
+ width: parent.width
+ Layout.minimumHeight: UM.Theme.getSize("section_header").height
+ Layout.fillWidth: true
+
+ property alias settingControl: settingContainer.children
+ property alias settingName: settingLabel.text
+ property string tooltipText: ""
+ property bool isCompressed: false
+
+ UM.Label
+ {
+ id: settingLabel
+ width: leftColumnWidth
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ // These numbers come from the IconWithText in RecommendedSettingSection
+ anchors.leftMargin: UM.Theme.getSize("medium_button_icon").width + UM.Theme.getSize("default_margin").width
+ }
+
+ MouseArea
+ {
+ id: tooltipArea
+ anchors.fill: settingLabel
+ propagateComposedEvents: true
+ hoverEnabled: true
+ onEntered: base.showTooltip(parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipText)
+ onExited: base.hideTooltip()
+ }
+
+ Item
+ {
+ id: settingContainer
+ height: childrenRect.height
+ anchors.left: settingLabel.right
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ states:
+ [
+ State
+ {
+ name: "sectionClosed" // Section is hidden when the switch in parent is off
+ when: isCompressed
+ PropertyChanges
+ {
+ target: settingItem;
+ opacity: 0
+ height: 0
+ implicitHeight: 0
+ Layout.preferredHeight: 0
+ Layout.minimumHeight: 0
+ enabled: false // Components can still be clickable with height 0 so they need to be disabled as well.
+ }
+ },
+ State
+ {
+ // All values are default. This state is only here for the animation.
+ name: "sectionOpened"
+ when: !isCompressed
+ }
+ ]
+
+ transitions: Transition
+ {
+ from: "sectionOpened"; to: "sectionClosed"
+ reversible: true
+ ParallelAnimation
+ {
+ // Animate section compressing as it closes
+ NumberAnimation { property: "Layout.minimumHeight"; duration: 100; }
+ // Animate section dissapearring as it closes
+ NumberAnimation { property: "opacity"; duration: 100; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml
new file mode 100644
index 0000000000..a8cfaee79f
--- /dev/null
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSettingSection.qml
@@ -0,0 +1,129 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 2.10
+
+import UM 1.7 as UM
+import Cura 1.7 as Cura
+
+Item
+{
+ id: settingSection
+ property alias title: sectionTitle.text
+ property alias icon: sectionTitle.source
+
+ property alias enableSectionSwitchVisible: enableSectionSwitch.visible
+ property alias enableSectionSwitchChecked: enableSectionSwitch.checked
+ property alias enableSectionSwitchEnabled: enableSectionSwitch.enabled
+ property string tooltipText: ""
+ property var enableSectionClicked: { return }
+ property int leftColumnWidth: Math.floor(width * 0.35)
+ property bool isCompressed: false
+
+ property alias contents: settingColumn.children
+
+ function onEnableSectionChanged(state) {}
+
+ height: childrenRect.height
+
+ Item
+ {
+ id: sectionHeader
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.left: parent.left
+ height: UM.Theme.getSize("section_header").height
+
+ Cura.IconWithText
+ {
+ id: sectionTitle
+ width: leftColumnWidth
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ source: UM.Theme.getIcon("PrintQuality")
+ spacing: UM.Theme.getSize("default_margin").width
+ iconSize: UM.Theme.getSize("medium_button_icon").width
+ iconColor: UM.Theme.getColor("text")
+ font: UM.Theme.getFont("medium_bold")
+ }
+
+ MouseArea
+ {
+ id: tooltipArea
+ anchors.fill: sectionTitle
+ propagateComposedEvents: true
+ hoverEnabled: true
+ onEntered: base.showTooltip(parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipText)
+ onExited: base.hideTooltip()
+ }
+
+ }
+
+ UM.Switch
+ {
+ id: enableSectionSwitch
+ anchors.left: parent.left
+ // These numbers come from the IconWithText in RecommendedSettingSection.
+ anchors.leftMargin: leftColumnWidth + UM.Theme.getSize("medium_button_icon").width + UM.Theme.getSize("default_margin").width
+ anchors.verticalCenter: sectionHeader.verticalCenter
+ visible: false
+
+ // This delay forces the setting change to happen after the setting section open/close animation. This is so the animation is smooth.
+ Timer
+ {
+ id: updateTimer
+ interval: 500 // This interval is set long enough so you can spam click the button on/off without lag.
+ repeat: false
+ onTriggered: onEnableSectionChanged(enableSectionSwitch.checked)
+ }
+ onClicked: updateTimer.restart()
+ }
+
+ ColumnLayout
+ {
+ id: settingColumn
+ width: parent.width
+ spacing: UM.Theme.getSize("thin_margin").height
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: sectionHeader.bottom
+ anchors.topMargin: UM.Theme.getSize("narrow_margin").height
+ }
+
+ states:
+ [
+ State
+ {
+ name: "settingListClosed"
+ when: !enableSectionSwitchChecked && enableSectionSwitchEnabled
+ PropertyChanges
+ {
+ target: settingSection
+ isCompressed: true
+ implicitHeight: 0
+ }
+ PropertyChanges
+ {
+ target: settingColumn
+ spacing: 0
+ }
+ },
+ State
+ {
+ // Use default properties. This is only here for the animation.
+ name: "settingListOpened"
+ when: enableSectionSwitchChecked && enableSectionSwitchEnabled
+ }
+ ]
+
+ // Animate section closing
+ transitions: Transition
+ {
+ from: "settingListOpened"; to: "settingListClosed"
+ reversible: true
+ // Animate section compressing as it closes
+ NumberAnimation { property: "implicitHeight"; duration: 100; }
+ }
+}
\ No newline at end of file
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedStrengthSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedStrengthSelector.qml
new file mode 100644
index 0000000000..75e8abd676
--- /dev/null
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedStrengthSelector.qml
@@ -0,0 +1,105 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.7
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 2.10
+
+import UM 1.7 as UM
+import Cura 1.7 as Cura
+
+
+RecommendedSettingSection
+{
+ id: strengthSection
+
+ title: catalog.i18nc("@label", "Strength")
+ icon: UM.Theme.getIcon("Hammer")
+ enableSectionSwitchVisible: false
+ enableSectionSwitchEnabled: false
+ tooltipText: catalog.i18nc("@label", "The following settings define the strength of your part.")
+
+ UM.SettingPropertyProvider
+ {
+ id: infillSteps
+ containerStackId: Cura.MachineManager.activeStackId
+ key: "gradual_infill_steps"
+ watchedProperties: ["value", "enabled"]
+ storeIndex: 0
+ }
+
+ contents: [
+ RecommendedSettingItem
+ {
+ settingName: catalog.i18nc("infill_sparse_density description", "Infill Density")
+ tooltipText: catalog.i18nc("@label", "Adjusts the density of infill of the print.")
+ settingControl: Cura.SingleSettingSlider
+ {
+ height: UM.Theme.getSize("combobox").height
+ width: parent.width
+ settingName: "infill_sparse_density"
+ updateAllExtruders: true
+ // disable slider when gradual support is enabled
+ enabled: parseInt(infillSteps.properties.value) === 0
+
+ function updateSetting(value)
+ {
+ Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", value)
+ Cura.MachineManager.resetSettingForAllExtruders("infill_line_distance")
+ }
+ }
+ },
+ RecommendedSettingItem
+ {
+ settingName: catalog.i18nc("@action:label", "Infill Pattern")
+ tooltipText: catalog.i18nc("@label",
+ "The pattern of the infill material of the print:\n\nFor quick prints of non functional model choose line, zig zag or lighting infill.\n\nFor functional part not subjected to a lot of stress we reccomend grid or triangle or tri hexagon.\n\nFor functional 3D prints which require high strenght in multiple directions use cubic, cubic subdivision, quarter cubic, octet, and gyroid.")
+
+ settingControl: Cura.SingleSettingComboBox
+ {
+ width: parent.width
+ settingName: "infill_pattern"
+ updateAllExtruders: true
+ }
+ },
+ RecommendedSettingItem
+ {
+ settingName: catalog.i18nc("@action:label", "Shell Thickness")
+ tooltipText: catalog.i18nc("@label", "Defines the tickness of your part side walls, roof and floor.")
+
+ settingControl: RowLayout
+ {
+ anchors.fill: parent
+ spacing: UM.Theme.getSize("default_margin").width
+ UM.ComponentWithIcon
+ {
+ Layout.fillWidth: true
+ source: UM.Theme.getIcon("PrintWalls")
+
+ Cura.SingleSettingTextField
+ {
+ width: parent.width
+ settingName: "wall_thickness"
+ updateAllExtruders: true
+ validator: UM.FloatValidator {}
+ unitText: catalog.i18nc("@label", "mm")
+ }
+ }
+ UM.ComponentWithIcon
+ {
+ Layout.fillWidth: true
+ source: UM.Theme.getIcon("PrintTopBottom")
+
+ Cura.SingleSettingTextField
+ {
+ width: parent.width
+ settingName: "top_bottom_thickness"
+ updateAllExtruders: true
+ validator: UM.FloatValidator {}
+ unitText: catalog.i18nc("@label", "mm")
+ }
+ }
+ }
+ }
+ ]
+}
diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml
index 3e40c16d74..44b3d28e24 100644
--- a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml
+++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml
@@ -1,307 +1,31 @@
-// Copyright (c) 2022 Ultimaker B.V.
+// Copyright (c) 2022 UltiMaker
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.3
import UM 1.5 as UM
-import Cura 1.0 as Cura
+import Cura 1.7 as Cura
-//
-// Enable support
-//
-Item
+RecommendedSettingSection
{
id: enableSupportRow
- height: UM.Theme.getSize("print_setup_big_item").height
- property real labelColumnWidth: Math.round(width / 3)
+ title: catalog.i18nc("@label", "Support")
+ icon: UM.Theme.getIcon("Support")
+ enableSectionSwitchVisible: supportEnabled.properties.enabled == "True"
+ enableSectionSwitchChecked: supportEnabled.properties.value == "True"
+ enableSectionSwitchEnabled: recommendedPrintSetup.settingsEnabled
+ tooltipText: catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, these parts would collapse during printing.")
- Item
+ function onEnableSectionChanged(state)
{
- id: enableSupportContainer
- width: labelColumnWidth + enableSupportCheckBox.width
-
- anchors
- {
- left: parent.left
- top: parent.top
- bottom: parent.bottom
- rightMargin: UM.Theme.getSize("thick_margin").width
- }
-
- Cura.IconWithText
- {
- id: enableSupportRowTitle
- anchors.left: parent.left
- visible: enableSupportCheckBox.visible
- source: UM.Theme.getIcon("Support")
- text: catalog.i18nc("@label", "Support")
- font: UM.Theme.getFont("medium")
- width: labelColumnWidth
- iconSize: UM.Theme.getSize("medium_button_icon").width
- tooltipText: catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")
- }
-
- UM.CheckBox
- {
- id: enableSupportCheckBox
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: enableSupportRowTitle.right
-
- property alias _hovered: enableSupportMouseArea.containsMouse
-
- enabled: recommendedPrintSetup.settingsEnabled
-
- visible: supportEnabled.properties.enabled == "True"
- checked: supportEnabled.properties.value == "True"
-
- MouseArea
- {
- id: enableSupportMouseArea
- anchors.fill: parent
- hoverEnabled: true
- // propagateComposedEvents used on supportToolTipMouseArea does not work with Controls Components.
- // It only works with other MouseAreas, so this is required
- onClicked: supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True")
- }
- }
-
- MouseArea
- {
- id: supportToolTipMouseArea
- anchors.fill: parent
- propagateComposedEvents: true
- hoverEnabled: true
- onEntered: base.showTooltip(enableSupportContainer, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0),
- catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing."))
- onExited: base.hideTooltip()
- }
+ supportEnabled.setPropertyValue("value", state)
}
- ComboBox
- {
- id: supportExtruderCombobox
-
- height: UM.Theme.getSize("print_setup_big_item").height
- anchors
- {
- left: enableSupportContainer.right
- right: parent.right
- leftMargin: UM.Theme.getSize("default_margin").width
- rightMargin: UM.Theme.getSize("thick_margin").width
- verticalCenter: parent.verticalCenter
- }
-
- enabled: recommendedPrintSetup.settingsEnabled
- visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
- textRole: "name" // this solves that the combobox isn't populated in the first time Cura is started
-
- model: extruderModel
-
- // knowing the extruder position, try to find the item index in the model
- function getIndexByPosition(position)
- {
- var itemIndex = -1 // if position is not found, return -1
- for (var item_index in model.items)
- {
- var item = model.getItem(item_index)
- if (item.index == position)
- {
- itemIndex = item_index
- break
- }
- }
- return itemIndex
- }
-
- onActivated:
- {
- if (model.getItem(index).enabled)
- {
- forceActiveFocus();
- supportExtruderNr.setPropertyValue("value", model.getItem(index).index);
- } else
- {
- currentIndex = supportExtruderNr.properties.value; // keep the old value
- }
- }
-
- currentIndex: (supportExtruderNr.properties.value !== undefined) ? supportExtruderNr.properties.value : 0
-
- property string color: "#fff"
- Connections
- {
- target: extruderModel
- function onModelChanged()
- {
- var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
- if (maybeColor)
- {
- supportExtruderCombobox.color = maybeColor
- }
- }
- }
- onCurrentIndexChanged:
- {
- var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
- if(maybeColor)
- {
- supportExtruderCombobox.color = maybeColor
- }
- }
-
- Binding
- {
- target: supportExtruderCombobox
- property: "currentIndex"
- value: supportExtruderCombobox.getIndexByPosition(supportExtruderNr.properties.value)
- // Sometimes when the value is already changed, the model is still being built.
- // The when clause ensures that the current index is not updated when this happens.
- when: supportExtruderCombobox.model.count > 0
- }
-
- indicator: UM.ColorImage
- {
- id: downArrow
- x: supportExtruderCombobox.width - width - supportExtruderCombobox.rightPadding
- y: supportExtruderCombobox.topPadding + Math.round((supportExtruderCombobox.availableHeight - height) / 2)
-
- source: UM.Theme.getIcon("ChevronSingleDown")
- width: UM.Theme.getSize("standard_arrow").width
- height: UM.Theme.getSize("standard_arrow").height
-
- color: UM.Theme.getColor("setting_control_button")
- }
-
- background: Rectangle
- {
- color:
- {
- if (!enabled)
- {
- return UM.Theme.getColor("setting_control_disabled")
- }
- if (supportExtruderCombobox.hovered || base.activeFocus)
- {
- return UM.Theme.getColor("setting_control_highlight")
- }
- return UM.Theme.getColor("setting_control")
- }
- radius: UM.Theme.getSize("setting_control_radius").width
- border.width: UM.Theme.getSize("default_lining").width
- border.color:
- {
- if (!enabled)
- {
- return UM.Theme.getColor("setting_control_disabled_border")
- }
- if (supportExtruderCombobox.hovered || supportExtruderCombobox.activeFocus)
- {
- return UM.Theme.getColor("setting_control_border_highlight")
- }
- return UM.Theme.getColor("setting_control_border")
- }
- }
-
- contentItem: UM.Label
- {
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
- anchors.right: downArrow.left
- rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
-
- text: supportExtruderCombobox.currentText
- textFormat: Text.PlainText
- color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
-
- elide: Text.ElideLeft
-
-
- background: Rectangle
- {
- id: swatch
- height: Math.round(parent.height / 2)
- width: height
- radius: Math.round(width / 2)
- anchors.right: parent.right
- anchors.verticalCenter: parent.verticalCenter
- anchors.rightMargin: UM.Theme.getSize("thin_margin").width
-
- color: supportExtruderCombobox.color
- }
- }
-
- popup: Popup
- {
- y: supportExtruderCombobox.height - UM.Theme.getSize("default_lining").height
- width: supportExtruderCombobox.width
- implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
- padding: UM.Theme.getSize("default_lining").width
-
- contentItem: ListView
- {
- implicitHeight: contentHeight
-
- ScrollBar.vertical: UM.ScrollBar {}
- clip: true
- model: supportExtruderCombobox.popup.visible ? supportExtruderCombobox.delegateModel : null
- currentIndex: supportExtruderCombobox.highlightedIndex
- }
-
- background: Rectangle
- {
- color: UM.Theme.getColor("setting_control")
- border.color: UM.Theme.getColor("setting_control_border")
- }
- }
-
- delegate: ItemDelegate
- {
- width: supportExtruderCombobox.width - 2 * UM.Theme.getSize("default_lining").width
- height: supportExtruderCombobox.height
- highlighted: supportExtruderCombobox.highlightedIndex == index
-
- contentItem: UM.Label
- {
- anchors.fill: parent
- anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
- anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
-
- text: model.name
- color: model.enabled ? UM.Theme.getColor("setting_control_text"): UM.Theme.getColor("action_button_disabled_text")
-
- elide: Text.ElideRight
- rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
-
- background: Rectangle
- {
- id: swatch
- height: Math.round(parent.height / 2)
- width: height
- radius: Math.round(width / 2)
- anchors.right: parent.right
- anchors.verticalCenter: parent.verticalCenter
- anchors.rightMargin: UM.Theme.getSize("thin_margin").width
-
- color: supportExtruderCombobox.model.getItem(index).color
- }
- }
-
- background: Rectangle
- {
- color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
- border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
- }
- }
- }
-
- property var extruderModel: CuraApplication.getExtrudersModel()
-
-
- UM.SettingPropertyProvider
+ property UM.SettingPropertyProvider supportEnabled: UM.SettingPropertyProvider
{
id: supportEnabled
containerStack: Cura.MachineManager.activeMachine
@@ -310,21 +34,45 @@ Item
storeIndex: 0
}
- UM.SettingPropertyProvider
- {
- id: supportExtruderNr
- containerStack: Cura.MachineManager.activeMachine
- key: "support_extruder_nr"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
+ contents: [
+ RecommendedSettingItem
+ {
+ settingName: catalog.i18nc("@action:label", "Support Type")
+ tooltipText: catalog.i18nc("@label", "Chooses between the techniques available to generate support. \n\n\"Normal\" support creates a support structure directly below the overhanging parts and drops those areas straight down. \n\n\"Tree\" support creates branches towards the overhanging areas that support the model on the tips of those branches, and allows the branches to crawl around the model to support it from the build plate as much as possible.")
+ isCompressed: enableSupportRow.isCompressed
- UM.SettingPropertyProvider
- {
- id: machineExtruderCount
- containerStack: Cura.MachineManager.activeMachine
- key: "machine_extruder_count"
- watchedProperties: ["value"]
- storeIndex: 0
- }
+ settingControl: Cura.SingleSettingComboBox
+ {
+ width: parent.width
+ settingName: "support_structure"
+ }
+ },
+ RecommendedSettingItem
+ {
+ Layout.preferredHeight: childrenRect.height
+ settingName: catalog.i18nc("@action:label", "Print with")
+ tooltipText: catalog.i18nc("@label", "The extruder train to use for printing the support. This is used in multi-extrusion.")
+ // Hide this component when there is only one extruder
+ enabled: Cura.ExtruderManager.enabledExtruderCount > 1
+ visible: Cura.ExtruderManager.enabledExtruderCount > 1
+ isCompressed: enableSupportRow.isCompressed || Cura.ExtruderManager.enabledExtruderCount <= 1
+
+ settingControl: Cura.SingleSettingExtruderSelectorBar
+ {
+ extruderSettingName: "support_extruder_nr"
+ }
+ },
+ RecommendedSettingItem
+ {
+ settingName: catalog.i18nc("@action:label", "Placement")
+ tooltipText: catalog.i18nc("support_type description", "Adjusts the placement of the support structures. The placement can be set to touching build plate or everywhere. When set to everywhere the support structures will also be printed on the model.")
+ isCompressed: enableSupportRow.isCompressed
+
+ settingControl: Cura.SingleSettingComboBox
+ {
+ width: parent.width
+ settingName: "support_type"
+ }
+ }
+ ]
}
diff --git a/resources/qml/PrintSetupTooltip.qml b/resources/qml/PrintSetupTooltip.qml
index af4280342c..195f7fb204 100644
--- a/resources/qml/PrintSetupTooltip.qml
+++ b/resources/qml/PrintSetupTooltip.qml
@@ -11,7 +11,7 @@ UM.PointingRectangle
id: base
property real sourceWidth: 0
width: UM.Theme.getSize("tooltip").width
- height: textScroll.height + UM.Theme.getSize("tooltip_margins").height * 2
+ height: textScroll.height + UM.Theme.getSize("tooltip_margins").height
color: UM.Theme.getColor("tooltip")
arrowSize: UM.Theme.getSize("default_arrow").width
diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml
index 4e72bca93e..d8e90e4951 100644
--- a/resources/qml/Settings/SettingTextField.qml
+++ b/resources/qml/Settings/SettingTextField.qml
@@ -4,7 +4,7 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
-import UM 1.5 as UM
+import UM 1.7 as UM
SettingItem
{
@@ -14,6 +14,11 @@ SettingItem
property string textBeforeEdit
property bool textHasChanged
property bool focusGainedByClick: false
+
+ readonly property UM.IntValidator intValidator: UM.IntValidator {}
+ readonly property UM.FloatValidator floatValidator: UM.FloatValidator {}
+ readonly property UM.IntListValidator intListValidator: UM.IntListValidator {}
+
onFocusReceived:
{
textHasChanged = false;
@@ -159,7 +164,23 @@ SettingItem
// should be done as little as possible)
clip: definition.type == "str" || definition.type == "[int]"
- validator: RegularExpressionValidator { regularExpression: (definition.type == "[int]") ? /^\[?(\s*-?[0-9]{0,11}\s*,)*(\s*-?[0-9]{0,11})\s*\]?$/ : (definition.type == "int") ? /^-?[0-9]{0,12}$/ : (definition.type == "float") ? /^-?[0-9]{0,11}[.,]?[0-9]{0,3}$/ : /^.*$/ } // definition.type property from parent loader used to disallow fractional number entry
+ validator: RegularExpressionValidator
+ {
+ regularExpression:
+ {
+ switch (definition.type)
+ {
+ case "[int]":
+ return new RegExp(intListValidator.regexString)
+ case "int":
+ return new RegExp(intValidator.regexString)
+ case "float":
+ return new RegExp(floatValidator.regexString)
+ default:
+ return new RegExp("^.*$")
+ }
+ }
+ }
Binding
{
diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml
index 6ecdc9dce0..fd48ef7448 100644
--- a/resources/qml/Toolbar.qml
+++ b/resources/qml/Toolbar.qml
@@ -5,7 +5,7 @@ import QtQuick 2.2
import QtQuick.Controls 2.3
import UM 1.5 as UM
-import Cura 1.0 as Cura
+import Cura 1.7 as Cura
Item
{
@@ -29,13 +29,13 @@ Item
anchors
{
fill: toolButtons
- leftMargin: -radius - border.width
- rightMargin: -border.width
- topMargin: -border.width
- bottomMargin: -border.width
+ leftMargin: -radius - border.width // Removes border on left side
}
radius: UM.Theme.getSize("default_radius").width
- color: UM.Theme.getColor("lining")
+ color: UM.Theme.getColor("toolbar_background")
+ border.color: UM.Theme.getColor("lining")
+ border.width: UM.Theme.getSize("default_lining").width
+
}
Column
@@ -111,13 +111,12 @@ Item
anchors
{
fill: extruderButtons
- leftMargin: -radius - border.width
- rightMargin: -border.width
- topMargin: -border.width
- bottomMargin: -border.width
+ leftMargin: -radius - border.width // Removes border on left side
}
radius: UM.Theme.getSize("default_radius").width
- color: UM.Theme.getColor("lining")
+ color: UM.Theme.getColor("toolbar_background")
+ border.color: UM.Theme.getColor("lining")
+ border.width: UM.Theme.getSize("default_lining").width
visible: extrudersModel.items.length > 1
}
@@ -135,11 +134,21 @@ Item
height: childrenRect.height
model: extrudersModel.items.length > 1 ? extrudersModel : 0
- delegate: ExtruderButton
+ delegate: Cura.ExtruderButton
{
extruder: model
- isTopElement: extrudersModel.getItem(0).id == model.id
- isBottomElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).id == model.id
+ isTopElement: extrudersModel.getItem(0).id === model.id
+ isBottomElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).id === model.id
+ text: catalog.i18ncp("@label %1 is filled in with the name of an extruder", "Print Selected Model with %1", "Print Selected Models with %1", UM.Selection.selectionCount).arg(extruder.name)
+ checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) !== -1
+ enabled: UM.Selection.hasSelection && extruder.stack.isEnabled
+ font: UM.Theme.getFont("small_emphasis")
+
+ onClicked:
+ {
+ forceActiveFocus() //First grab focus, so all the text fields are updated
+ CuraActions.setExtruderForSelection(extruder.id)
+ }
}
}
}
diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml
index efe14497bc..912403a33e 100644
--- a/resources/qml/Widgets/ComboBox.qml
+++ b/resources/qml/Widgets/ComboBox.qml
@@ -25,6 +25,8 @@ ComboBox
enabled: delegateModel.count > 0
+ height: UM.Theme.getSize("combobox").height
+
onVisibleChanged: { popup.close() }
states: [
diff --git a/resources/qml/Widgets/SingleSettingComboBox.qml b/resources/qml/Widgets/SingleSettingComboBox.qml
new file mode 100644
index 0000000000..338e14b144
--- /dev/null
+++ b/resources/qml/Widgets/SingleSettingComboBox.qml
@@ -0,0 +1,102 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.3
+
+import UM 1.5 as UM
+import Cura 1.7 as Cura
+
+// This ComboBox allows changing of a single setting. Only the setting name has to be passed in to "settingName".
+// All of the setting updating logic is handled by this component.
+// This uses the "options" value of a setting to populate the drop down. This will only work for settings with "options"
+// If the setting is limited to a single extruder or is settable with different values per extruder use "updateAllExtruders: true"
+Cura.ComboBox {
+ textRole: "text"
+ property alias settingName: propertyProvider.key
+
+ // If true, all extruders will have "settingName" property updated.
+ // The displayed value will be read from the extruder with index "defaultExtruderIndex" instead of the machine.
+ property bool updateAllExtruders: false
+ // This is only used if updateAllExtruders == true
+ property int defaultExtruderIndex: 0
+
+ model: ListModel
+ {
+ id: comboboxModel
+
+ // The propertyProvider has not loaded the setting when this components onComplete triggers. Populating the model
+ // is defered until propertyProvider signals "onIsValueUsedChanged". The defered upate is triggered with this function.
+ function updateModel()
+ {
+ clear()
+
+ if(!propertyProvider.properties.options) // No options have been loaded yet to populate combobox
+ {
+ return
+ }
+
+ for (var i = 0; i < propertyProvider.properties["options"].keys().length; i++)
+ {
+ var key = propertyProvider.properties["options"].keys()[i]
+ var value = propertyProvider.properties["options"][key]
+ comboboxModel.append({ text: value, code: key})
+
+ if (propertyProvider.properties.value === key)
+ {
+ // The combobox is cleared after each value change so the currentIndex must be set each time.
+ currentIndex = i
+ }
+ }
+ }
+ }
+
+ // Updates to the setting are delayed by interval. The signal onIsValueUsedChanged() is emitted early for some reason.
+ // This causes the selected value in the combobox to be updated to the previous value. (This issue is present with infill_pattern setting)
+ // This is a hack. If you see this in the future, try removing it and see if the combobox still works.
+ Timer
+ {
+ id: updateTimer
+ interval: 100
+ repeat: false
+ onTriggered: comboboxModel.updateModel(false)
+ }
+
+ property UM.SettingPropertyProvider propertyProvider: UM.SettingPropertyProvider
+ {
+ id: propertyProvider
+ containerStackId: updateAllExtruders ? Cura.ExtruderManager.extruderIds[defaultExtruderIndex] : Cura.MachineManager.activeMachine.id
+ watchedProperties: ["value" , "options"]
+ }
+
+ Connections
+ {
+ target: propertyProvider
+ function onContainerStackChanged() { updateTimer.restart() }
+ function onIsValueUsedChanged() { updateTimer.restart() }
+ }
+
+ onCurrentIndexChanged: parseValueAndUpdateSetting()
+
+ function parseValueAndUpdateSetting()
+ {
+ if (comboboxModel.get(currentIndex) && comboboxModel.get(currentIndex).code !== propertyProvider.properties.value)
+ {
+ updateSetting(comboboxModel.get(currentIndex).code)
+ }
+
+ }
+
+ function updateSetting(value)
+ {
+ if (updateAllExtruders)
+ {
+ Cura.MachineManager.setSettingForAllExtruders(propertyProvider.key, "value", value)
+ }
+ else
+ {
+ propertyProvider.setPropertyValue("value", value)
+ }
+ }
+}
diff --git a/resources/qml/Widgets/SingleSettingExtruderSelectorBar.qml b/resources/qml/Widgets/SingleSettingExtruderSelectorBar.qml
new file mode 100644
index 0000000000..d753bb9167
--- /dev/null
+++ b/resources/qml/Widgets/SingleSettingExtruderSelectorBar.qml
@@ -0,0 +1,70 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.12
+import QtQuick.Controls 2.12
+import QtQuick.Layouts 1.3
+
+import UM 1.5 as UM
+import Cura 1.5 as Cura
+
+// This component displays a row of extruder icons, clicking on the extruder will update the setting passed to "settingName"
+// with the index of that extruder.
+// This will only work for settings that take an extruder index.
+Row
+{
+ id: extruderSelectionBar
+
+ width: parent.width
+ height: childrenRect.height
+ spacing: 0
+
+ property int selectedIndex: extruderSettingProvider.properties.value !== undefined ? extruderSettingProvider.properties.value : 0
+ property alias model: extruderButtonRepeater.model
+ property alias extruderSettingName: extruderSettingProvider.key
+ property alias containerStack: extruderSettingProvider.containerStack
+
+ property UM.SettingPropertyProvider extruderSettingProvider: UM.SettingPropertyProvider
+ {
+ id: extruderSettingProvider
+ containerStack: Cura.MachineManager.activeMachine
+ watchedProperties: [ "value" ]
+ storeIndex: 0
+ }
+
+ function onClickExtruder(index)
+ {
+ forceActiveFocus();
+ extruderSettingProvider.setPropertyValue("value", index);
+ }
+
+
+ Repeater
+ {
+ id: extruderButtonRepeater
+
+ model: CuraApplication.getExtrudersModel()
+
+ delegate: Item
+ {
+ width: {
+ // This will "squish" the extruder buttons together when the fill up the horizontal space
+ const maximum_width = Math.floor(extruderSelectionBar.width / extruderButtonRepeater.count);
+ return Math.min(UM.Theme.getSize("large_button").width, maximum_width);
+ }
+ height: childrenRect.height
+
+ Cura.ExtruderButton
+ {
+ anchors.margins: 0
+ padding: 0
+ extruder: model
+ checked: extruder.index === selectedIndex
+ iconScale: 0.8
+ font: UM.Theme.getFont("tiny_emphasis")
+ buttonSize: UM.Theme.getSize("small_button").width
+ onClicked: extruder.enabled && onClickExtruder(extruder.index)
+ }
+ }
+ }
+}
diff --git a/resources/qml/Widgets/SingleSettingSlider.qml b/resources/qml/Widgets/SingleSettingSlider.qml
new file mode 100644
index 0000000000..27e2be562c
--- /dev/null
+++ b/resources/qml/Widgets/SingleSettingSlider.qml
@@ -0,0 +1,105 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.7
+import QtQuick.Controls 2.15
+
+import UM 1.7 as UM
+import Cura 1.7 as Cura
+
+// This silder allows changing of a single setting. Only the setting name has to be passed in to "settingName".
+// All of the setting updating logic is handled by this component.
+// This component allows you to choose values between minValue -> maxValue and rounds them to the nearest 10.
+// If the setting is limited to a single extruder or is settable with different values per extruder use "updateAllExtruders: true"
+UM.Slider
+{
+ id: settingSlider
+
+ property alias settingName: propertyProvider.key
+
+ // If true, all extruders will have "settingName" property updated.
+ // The displayed value will be read from the extruder with index "defaultExtruderIndex" instead of the machine.
+ property bool updateAllExtruders: false
+ // This is only used if updateAllExtruders == true
+ property int defaultExtruderIndex: 0
+ property int previousValue: -1
+
+ // set range from 0 to 100
+ from: 0; to: 100
+ // set stepSize to 10 and set snapMode to snap on release snapMode is needed
+ // otherwise the used percentage and slider handle show different values
+ stepSize: 10; snapMode: Slider.SnapOnRelease
+
+ UM.SettingPropertyProvider
+ {
+ id: propertyProvider
+ containerStackId: updateAllExtruders ? Cura.ExtruderManager.extruderIds[defaultExtruderIndex] : Cura.MachineManager.activeMachine.id
+ watchedProperties: ["value"]
+ storeIndex: 0
+ }
+
+ // set initial value from stack
+ value: parseInt(propertyProvider.properties.value)
+
+ // When the slider is released trigger an update immediately. This forces the slider to snap to the rounded value.
+ onPressedChanged: function(pressed)
+ {
+ if(!pressed)
+ {
+ updateSetting(settingSlider.value);
+ }
+ }
+
+ Connections
+ {
+ target: propertyProvider
+ function onContainerStackChanged()
+ {
+ updateTimer.restart()
+ }
+ function onIsValueUsedChanged()
+ {
+ updateTimer.restart()
+ }
+ }
+
+ // Updates to the setting are delayed by interval. This reduces lag by waiting a bit after a setting change to update the slider contents.
+ Timer
+ {
+ id: updateTimer
+ interval: 100
+ repeat: false
+ onTriggered: parseValueUpdateSetting(false)
+ }
+
+ function updateSlider(value)
+ {
+ settingSlider.value = value
+ }
+
+ function parseValueUpdateSetting(triggerUpdate)
+ {
+ // Only run when the setting value is updated by something other than the slider.
+ // This sets the slider value based on the setting value, it does not update the setting value.
+
+ if (parseInt(propertyProvider.properties.value) == settingSlider.value)
+ {
+ return
+ }
+
+ settingSlider.value = propertyProvider.properties.value
+ }
+
+ // Override this function to update a setting differently
+ function updateSetting(value)
+ {
+ if (updateAllExtruders)
+ {
+ Cura.MachineManager.setSettingForAllExtruders(propertyProvider.key, "value", value)
+ }
+ else
+ {
+ propertyProvider.setPropertyValue("value", value)
+ }
+ }
+}
diff --git a/resources/qml/Widgets/SingleSettingTextField.qml b/resources/qml/Widgets/SingleSettingTextField.qml
new file mode 100644
index 0000000000..12d24d285d
--- /dev/null
+++ b/resources/qml/Widgets/SingleSettingTextField.qml
@@ -0,0 +1,190 @@
+// Copyright (c) 2022 UltiMaker
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.3
+
+import UM 1.7 as UM
+import Cura 1.7 as Cura
+
+// This text field allows you to edit a single setting. The setting can be passed by "settingName".
+// You must specify a validator with Validator. We store our default setting validators in qml/Validators
+// If the setting is limited to a single extruder or is settable with different values per extruder use "updateAllExtruders: true"
+UM.TextField
+{
+ id: control
+ property alias settingName: propertyProvider.key
+
+ // If true, all extruders will have "settingName" property updated.
+ // The displayed value will be read from the extruder with index "defaultExtruderIndex" instead of the machine.
+ property bool updateAllExtruders: false
+ // This is only used if updateAllExtruders == true
+ property int defaultExtruderIndex: 0
+
+ // Resolving the value in the textField.
+ Binding
+ {
+ target: control
+ property: "text"
+
+ value:
+ {
+ if (control.activeFocus)
+ {
+ // This stops the text being reformatted as you edit. For example "10.1" -Edit-> "10." -Auto Format-> "10.0".
+ return control.text
+ }
+
+ if (( propertyProvider.properties.resolve != "None" && propertyProvider.properties.resolve) && ( propertyProvider.properties.stackLevels[0] != 0) && ( propertyProvider.properties.stackLevels[0] != 1))
+ {
+ // We have a resolve function. Indicates that the setting is not settable per extruder and that
+ // we have to choose between the resolved value (default) and the global value
+ // (if user has explicitly set this).
+ return base.resolve
+ }
+
+ return propertyProvider.properties.value
+ }
+
+ }
+
+ property UM.SettingPropertyProvider propertyProvider: UM.SettingPropertyProvider
+ {
+ id: propertyProvider
+ watchedProperties: ["value", "validationState", "resolve"]
+ containerStackId: updateAllExtruders ? Cura.ExtruderManager.extruderIds[defaultExtruderIndex] : Cura.MachineManager.activeMachine.id
+ }
+
+ Connections
+ {
+ target: propertyProvider
+ function onContainerStackChanged()
+ {
+ updateTimer.restart()
+ }
+ function onIsValueUsedChanged()
+ {
+ updateTimer.restart()
+ }
+ }
+
+ // Restart update timer right after releasing a key. This stops lag while typing, but you still get warning and error
+ // textfield styling while typing.
+ Keys.onReleased: updateTimer.restart()
+ // Forces formatting when you finish editing "10.1" -Edit-> "10." -Focus Change-> "10"
+ onActiveFocusChanged: updateTimer.restart()
+
+ // Updates to the setting are delayed by interval. This stops lag caused by calling the
+ // parseValueUpdateSetting() function being called repeatedly while changing the text value.
+ Timer
+ {
+ id: updateTimer
+ interval: 50
+ repeat: false
+ onTriggered: parseValueUpdateSetting()
+ }
+
+ function parseValueUpdateSetting()
+ {
+ // User convenience. We use dots for decimal values
+ const modified_text = text.replace(",", ".");
+ if (propertyProvider.properties.value === modified_text || (parseFloat(propertyProvider.properties.value) === parseFloat(modified_text)))
+ {
+ // Don't set the property value from the control. It already has the same value
+ return
+ }
+
+ if (propertyProvider && modified_text !== propertyProvider.properties.value)
+ {
+ updateSetting(modified_text);
+ }
+ }
+
+ function updateSetting(value)
+ {
+ if (updateAllExtruders)
+ {
+ Cura.MachineManager.setSettingForAllExtruders(propertyProvider.key, "value", value)
+ }
+ else
+ {
+ propertyProvider.setPropertyValue("value", text)
+ }
+ }
+
+ // Forced to override parent states using overrideState. Otherwise hover in TextField.qml would override the validation states.
+ // The first state to evaluate true applies styling. States in inheriting components get appended to the state list of their parent.
+ overrideState: true
+ states:
+ [
+ State
+ {
+ name: "validationError"
+ when: propertyProvider.properties.validationState === "ValidatorState.Exception" || propertyProvider.properties.validationState === "ValidatorState.MinimumError" || propertyProvider.properties.validationState === "ValidatorState.MaximumError"
+ PropertyChanges
+ {
+ target: background
+ liningColor: UM.Theme.getColor("setting_validation_error")
+ color: UM.Theme.getColor("setting_validation_error_background")
+ }
+ },
+ State
+ {
+ name: "validationWarning"
+ when: propertyProvider.properties.validationState === "ValidatorState.MinimumWarning" || propertyProvider.properties.validationState === "ValidatorState.MaximumWarning"
+ PropertyChanges
+ {
+ target: background
+ liningColor: UM.Theme.getColor("setting_validation_warning")
+ color: UM.Theme.getColor("setting_validation_warning_background")
+ }
+ },
+ State
+ {
+ name: "disabled"
+ when: !control.enabled
+ PropertyChanges
+ {
+ target: control
+ color: UM.Theme.getColor("text_field_text_disabled")
+ }
+ PropertyChanges
+ {
+ target: background
+ liningColor: UM.Theme.getColor("text_field_border_disabled")
+ }
+ },
+ State
+ {
+ name: "invalid"
+ when: !control.acceptableInput
+ PropertyChanges
+ {
+ target: background
+ color: UM.Theme.getColor("setting_validation_error_background")
+ }
+ },
+ State
+ {
+ name: "active"
+ when: control.activeFocus
+ PropertyChanges
+ {
+ target: background
+ liningColor: UM.Theme.getColor("text_field_border_active")
+ borderColor: UM.Theme.getColor("text_field_border_active")
+ }
+ },
+ State
+ {
+ name: "hovered"
+ when: control.hovered && !control.activeFocus
+ PropertyChanges
+ {
+ target: background
+ liningColor: UM.Theme.getColor("text_field_border_hovered")
+ }
+ }
+ ]
+}
diff --git a/resources/qml/Widgets/TextField.qml b/resources/qml/Widgets/TextField.qml
index 085c7b7742..f16d4abb11 100644
--- a/resources/qml/Widgets/TextField.qml
+++ b/resources/qml/Widgets/TextField.qml
@@ -4,87 +4,12 @@
import QtQuick 2.10
import QtQuick.Controls 2.3
-import UM 1.5 as UM
+import UM 1.7 as UM
import Cura 1.1 as Cura
-
-//
-// Cura-style TextField
-//
-TextField
+UM.TextField
{
id: control
-
- property alias leftIcon: iconLeft.source
-
height: UM.Theme.getSize("setting_control").height
-
- hoverEnabled: true
- selectByMouse: true
- font: UM.Theme.getFont("default")
- color: UM.Theme.getColor("text_field_text")
- selectedTextColor: UM.Theme.getColor("text_field_text")
- placeholderTextColor: UM.Theme.getColor("text_field_text_disabled")
- renderType: Text.NativeRendering
- selectionColor: UM.Theme.getColor("text_selection")
- leftPadding: iconLeft.visible ? iconLeft.width + UM.Theme.getSize("default_margin").width * 2 : UM.Theme.getSize("thin_margin").width
-
- states: [
- State
- {
- name: "disabled"
- when: !control.enabled
- PropertyChanges { target: control; color: UM.Theme.getColor("text_field_text_disabled")}
- PropertyChanges { target: backgroundRectangle; liningColor: UM.Theme.getColor("text_field_border_disabled")}
- },
- State
- {
- name: "invalid"
- when: !control.acceptableInput
- PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_validation_error_background")}
- },
- State
- {
- name: "active"
- when: control.activeFocus
- PropertyChanges
- {
- target: backgroundRectangle
- liningColor: UM.Theme.getColor("text_field_border_active")
- borderColor: UM.Theme.getColor("text_field_border_active")
- }
- },
- State
- {
- name: "hovered"
- when: control.hovered && !control.activeFocus
- PropertyChanges
- {
- target: backgroundRectangle
- liningColor: UM.Theme.getColor("text_field_border_hovered")
- }
- }
- ]
-
- background: UM.UnderlineBackground
- {
- id: backgroundRectangle
- //Optional icon added on the left hand side.
- UM.ColorImage
- {
- id: iconLeft
-
- anchors
- {
- verticalCenter: parent.verticalCenter
- left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width
- }
-
- visible: source != ""
- height: UM.Theme.getSize("small_button_icon").height
- width: visible ? height : 0
- color: control.color
- }
- }
+ leftPadding: UM.Theme.getSize("thin_margin").width
}
diff --git a/resources/qml/qmldir b/resources/qml/qmldir
index d5184f1d8c..8fce82c858 100644
--- a/resources/qml/qmldir
+++ b/resources/qml/qmldir
@@ -19,7 +19,6 @@ SettingView 1.0 SettingView.qml
ProfileMenu 1.0 ProfileMenu.qml
PrintSelectorCard 1.0 PrintSelectorCard.qml
-
# Cura/WelcomePages
WizardPanel 1.0 WizardPanel.qml
@@ -38,6 +37,11 @@ ScrollView 1.0 ScrollView.qml
Menu 1.0 Menu.qml
MenuItem 1.0 MenuItem.qml
MenuSeparator 1.0 MenuSeparator.qml
+SingleSettingExtruderSelectorBar 1.7 SingleSettingExtruderSelectorBar.qml
+ExtruderButton 1.7 ExtruderButton.qml
+SingleSettingComboBox 1.7 SingleSettingComboBox.qml
+SingleSettingSlider 1.7 SingleSettingSlider.qml
+SingleSettingTextField 1.7 SingleSettingTextField.qml
# Cura/MachineSettings
diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg
index ee8192dd30..78cc700133 100644
--- a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg
+++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg
@@ -12,4 +12,5 @@ weight = 0
[values]
layer_height = 0.2
-layer_height_0 = 0.2
\ No newline at end of file
+layer_height_0 = 0.2
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_super.inst.cfg
new file mode 100644
index 0000000000..c716e00de0
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_ultra.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_ultra.inst.cfg
new file mode 100644
index 0000000000..0421d175a0
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_ABS_ultra.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Ultra Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = ultra
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+wall_thickness = =line_width*8
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_super.inst.cfg
new file mode 100644
index 0000000000..126071b104
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*8
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_ultra.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_ultra.inst.cfg
new file mode 100644
index 0000000000..40d4dda7c6
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_PETG_ultra.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Ultra Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = ultra
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*8
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_super.inst.cfg
new file mode 100644
index 0000000000..aa957258c9
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_ultra.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_ultra.inst.cfg
new file mode 100644
index 0000000000..80f6f9289e
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.2_PLA_ultra.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Ultra Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = ultra
+setting_version = 20
+type = quality
+variant = 0.2mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..1ac70ca73d
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_low.inst.cfg
new file mode 100644
index 0000000000..e0ab43feb7
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_low.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..a649b2c0c5
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_super.inst.cfg
new file mode 100644
index 0000000000..06397942f1
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_ABS_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..e0ee7ef21c
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_low.inst.cfg
new file mode 100644
index 0000000000..1ecc6a2be0
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..9fb4a9cc65
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_super.inst.cfg
new file mode 100644
index 0000000000..0ab38c1878
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..2383119106
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_low.inst.cfg
new file mode 100644
index 0000000000..d94a3dc781
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..be628a3342
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_super.inst.cfg
new file mode 100644
index 0000000000..b0c4d30dd5
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_PLA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..84d40de570
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..d8cdcba1d3
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_super.inst.cfg
new file mode 100644
index 0000000000..9f923fafaf
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.3_TPU_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.3mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..4082094ba7
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_low.inst.cfg
new file mode 100644
index 0000000000..7887ce26dc
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_low.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..6b8cdfb9ee
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_super.inst.cfg
new file mode 100644
index 0000000000..4ed06a0bd6
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_ABS_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..770fa64f82
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_low.inst.cfg
new file mode 100644
index 0000000000..cd32a817b6
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..4100e7593d
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_super.inst.cfg
new file mode 100644
index 0000000000..190e5968f2
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..fdede1ecef
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_low.inst.cfg
new file mode 100644
index 0000000000..c425ff5195
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..2c7482cb75
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_super.inst.cfg
new file mode 100644
index 0000000000..cc8953b80d
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_PLA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..0e7e97eefb
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..83a3191e8a
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_super.inst.cfg
new file mode 100644
index 0000000000..2a48e4c813
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.4_TPU_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.4mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_adaptive.inst.cfg
new file mode 100644
index 0000000000..1762683e6c
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_adaptive.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_low.inst.cfg
new file mode 100644
index 0000000000..0e072af63a
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_low.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..6d08e3fdf4
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_super.inst.cfg
new file mode 100644
index 0000000000..40189351e9
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_ABS_super.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_adaptive.inst.cfg
new file mode 100644
index 0000000000..d23be94f20
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_adaptive.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_low.inst.cfg
new file mode 100644
index 0000000000..33b0038eec
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_low.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..716e95f84d
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_super.inst.cfg
new file mode 100644
index 0000000000..da93ff74ba
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PETG_super.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*4
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_adaptive.inst.cfg
new file mode 100644
index 0000000000..4772f084b3
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_low.inst.cfg
new file mode 100644
index 0000000000..0d40c4d92a
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..76dfa5bd4b
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_super.inst.cfg
new file mode 100644
index 0000000000..b634a17a19
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_PLA_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_adaptive.inst.cfg
new file mode 100644
index 0000000000..3070b3319b
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_adaptive.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = adaptive
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..8f60d14411
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_super.inst.cfg
new file mode 100644
index 0000000000..a8e3291832
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.5_TPU_super.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = super
+setting_version = 20
+type = quality
+variant = 0.5mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_ABS_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_ABS_standard.inst.cfg
new file mode 100644
index 0000000000..bcad50d300
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_ABS_standard.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_PETG_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_PETG_standard.inst.cfg
new file mode 100644
index 0000000000..3156e9cc2b
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_PETG_standard.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..5cc4a83403
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_low.inst.cfg
new file mode 100644
index 0000000000..be762411a6
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_low.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = low
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_standard.inst.cfg
new file mode 100644
index 0000000000..67e6d1a747
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_PLA_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.6_TPU_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.6_TPU_standard.inst.cfg
new file mode 100644
index 0000000000..5b7756e0dd
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.6_TPU_standard.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = standard
+setting_version = 20
+type = quality
+variant = 0.6mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.8_ABS_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.8_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..57a5c2976e
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.8_ABS_draft.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 0.8mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.8_PETG_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.8_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..f2b7c564a3
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.8_PETG_draft.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 0.8mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.8_PLA_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.8_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..d8ff00c7ed
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.8_PLA_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 0.8mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_0.8_TPU_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_0.8_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..e4069ae61b
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_0.8_TPU_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 0.8mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_1.0_ABS_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_1.0_ABS_draft.inst.cfg
new file mode 100644
index 0000000000..ddde9b268f
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_1.0_ABS_draft.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_abs
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 1.0mm Nozzle
+
+[values]
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_1.0_PETG_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_1.0_PETG_draft.inst.cfg
new file mode 100644
index 0000000000..64a025cfad
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_1.0_PETG_draft.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_petg
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 1.0mm Nozzle
+
+[values]
+speed_layer_0 = 15
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_1.0_PLA_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_1.0_PLA_draft.inst.cfg
new file mode 100644
index 0000000000..1b6f9c1b0f
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_1.0_PLA_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_pla
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 1.0mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_1.0_TPU_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_1.0_TPU_draft.inst.cfg
new file mode 100644
index 0000000000..2529c7225a
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_1.0_TPU_draft.inst.cfg
@@ -0,0 +1,14 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+material = generic_tpu
+quality_type = draft
+setting_version = 20
+type = quality
+variant = 1.0mm Nozzle
+
+[values]
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_adaptive.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_adaptive.inst.cfg
new file mode 100644
index 0000000000..1135b75b56
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_adaptive.inst.cfg
@@ -0,0 +1,20 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Dynamic Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = adaptive
+setting_version = 20
+type = quality
+weight = -2
+
+[values]
+adaptive_layer_height_enabled = true
+layer_height = 0.16
+layer_height_0 = 0.20
+support_interface_height = =layer_height*6
+top_bottom_thickness = =layer_height_0+layer_height*4
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_draft.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_draft.inst.cfg
new file mode 100644
index 0000000000..ac7566ac6d
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_draft.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Draft Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = draft
+setting_version = 20
+type = quality
+weight = -5
+
+[values]
+layer_height = 0.32
+layer_height_0 = 0.32
+support_interface_height = =layer_height*4
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_low.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_low.inst.cfg
new file mode 100644
index 0000000000..b5fffe82c0
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_low.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Low Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = low
+setting_version = 20
+type = quality
+weight = -4
+
+[values]
+layer_height = 0.28
+layer_height_0 = 0.28
+support_interface_height = =layer_height*4
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_standard.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_standard.inst.cfg
new file mode 100644
index 0000000000..c3d08b02cb
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_standard.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Standard Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = standard
+setting_version = 20
+type = quality
+weight = -3
+
+[values]
+layer_height = 0.2
+layer_height_0 = 0.2
+support_interface_height = =layer_height*4
+top_bottom_thickness = =layer_height_0+layer_height*3
+wall_thickness = =line_width*2
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_super.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_super.inst.cfg
new file mode 100644
index 0000000000..8c8efecbce
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_super.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Super Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = super
+setting_version = 20
+type = quality
+weight = -1
+
+[values]
+layer_height = 0.12
+layer_height_0 = 0.12
+support_interface_height = =layer_height*8
+top_bottom_thickness = =layer_height_0+layer_height*6
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/geeetech_quality/geeetech_quality_global_ultra.inst.cfg b/resources/quality/geeetech_quality/geeetech_quality_global_ultra.inst.cfg
new file mode 100644
index 0000000000..558a54fdd7
--- /dev/null
+++ b/resources/quality/geeetech_quality/geeetech_quality_global_ultra.inst.cfg
@@ -0,0 +1,19 @@
+[general]
+definition = Geeetech_Base_Single_Extruder
+name = Ultra Quality
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = ultra
+setting_version = 20
+type = quality
+weight = 0
+
+[values]
+layer_height = 0.08
+layer_height_0 = 0.12
+support_interface_height = =layer_height*12
+top_bottom_thickness = =layer_height_0+layer_height*10
+wall_thickness = =line_width*3
+
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg
index a04f4ce184..3a58d31e34 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg
@@ -1,16 +1,16 @@
[general]
-version = 4
-name = Normal - Experimental
definition = ultimaker_s3
+name = Fast - Experimental
+version = 4
[metadata]
+is_experimental = True
+material = generic_cpe_plus
+quality_type = draft
setting_version = 20
type = quality
-quality_type = fast
-weight = -1
-material = generic_cpe_plus
variant = AA 0.8
-is_experimental = True
+weight = -2
[values]
brim_width = 14
@@ -27,3 +27,4 @@ speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
support_z_distance = =layer_height
top_bottom_thickness = 1.2
+
diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
index 82db443247..2e986643f5 100644
--- a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg
@@ -1,16 +1,16 @@
[general]
-version = 4
-name = Normal - Experimental
definition = ultimaker_s3
+name = Fast - Experimental
+version = 4
[metadata]
+is_experimental = True
+material = generic_pc
+quality_type = draft
setting_version = 20
type = quality
-quality_type = fast
-weight = -1
-material = generic_pc
variant = AA 0.8
-is_experimental = True
+weight = -2
[values]
brim_width = 14
@@ -21,3 +21,4 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg
index e014c6ae90..c37ab61582 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg
@@ -1,16 +1,16 @@
[general]
-version = 4
-name = Normal - Experimental
definition = ultimaker_s5
+name = Fast - Experimental
+version = 4
[metadata]
+is_experimental = True
+material = generic_cpe_plus
+quality_type = draft
setting_version = 20
type = quality
-quality_type = fast
-weight = -1
-material = generic_cpe_plus
variant = AA 0.8
-is_experimental = True
+weight = -2
[values]
brim_width = 14
@@ -27,3 +27,4 @@ speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 35 / 40)
support_z_distance = =layer_height
top_bottom_thickness = 1.2
+
diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
index 3951bb8ccc..2a5fa59681 100644
--- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
+++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg
@@ -1,16 +1,16 @@
[general]
-version = 4
-name = Normal - Experimental
definition = ultimaker_s5
+name = Fast - Experimental
+version = 4
[metadata]
+is_experimental = True
+material = generic_pc
+quality_type = draft
setting_version = 20
type = quality
-quality_type = fast
-weight = -1
-material = generic_pc
variant = AA 0.8
-is_experimental = True
+weight = -2
[values]
brim_width = 14
@@ -21,3 +21,4 @@ speed_print = 50
speed_topbottom = =math.ceil(speed_print * 25 / 50)
speed_wall = =math.ceil(speed_print * 40 / 50)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
+
diff --git a/resources/themes/cura-light/icons/default/Hammer.svg b/resources/themes/cura-light/icons/default/Hammer.svg
new file mode 100644
index 0000000000..c32f27a0e2
--- /dev/null
+++ b/resources/themes/cura-light/icons/default/Hammer.svg
@@ -0,0 +1,3 @@
+
diff --git a/resources/themes/cura-light/icons/default/PrintWalls.svg b/resources/themes/cura-light/icons/default/PrintWalls.svg
new file mode 100644
index 0000000000..f582a5599d
--- /dev/null
+++ b/resources/themes/cura-light/icons/default/PrintWalls.svg
@@ -0,0 +1,12 @@
+
diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json
index 22986b3d68..ad32573288 100644
--- a/resources/themes/cura-light/theme.json
+++ b/resources/themes/cura-light/theme.json
@@ -172,6 +172,26 @@
"size": 0.9,
"weight": 700,
"family": "Noto Sans"
+ },
+ "tiny_emphasis": {
+ "size": 0.7,
+ "weight": 700,
+ "family": "Noto Sans"
+ },
+ "tiny_emphasis_ja_JP": {
+ "size": 0.7,
+ "weight": 700,
+ "family": "Noto Sans"
+ },
+ "tiny_emphasis_zh_CN": {
+ "size": 0.7,
+ "weight": 700,
+ "family": "Noto Sans"
+ },
+ "tiny_emphasis_zh_TW": {
+ "size": 0.7,
+ "weight": 700,
+ "family": "Noto Sans"
}
},
@@ -354,6 +374,10 @@
"checkbox_text": "text_default",
"checkbox_text_disabled": "text_disabled",
+ "switch": "background_1",
+ "switch_state_checked": "accent_1",
+ "switch_state_unchecked": "text_disabled",
+
"radio": "background_1",
"radio_disabled": "background_2",
"radio_selected": "accent_1",
@@ -486,9 +510,9 @@
"print_setup_widget": [38.0, 30.0],
"print_setup_extruder_box": [0.0, 6.0],
- "print_setup_slider_groove": [0.16, 0.16],
- "print_setup_slider_handle": [1.0, 1.0],
- "print_setup_slider_tickmarks": [0.32, 0.32],
+ "slider_widget_groove": [0.16, 0.16],
+ "slider_widget_handle": [1.3, 1.3],
+ "slider_widget_tickmarks": [0.5, 0.5],
"print_setup_big_item": [28, 2.5],
"print_setup_icon": [1.2, 1.2],
"drag_icon": [1.416, 0.25],
@@ -649,6 +673,8 @@
"recommended_button_icon": [1.7, 1.7],
+ "recommended_section_setting_item": [14.0, 2.0],
+
"reset_profile_icon": [1, 1]
}
}
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.2.inst.cfg
new file mode 100644
index 0000000000..c7802cd518
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.3.inst.cfg
new file mode 100644
index 0000000000..e747eca5c1
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.4.inst.cfg
new file mode 100644
index 0000000000..51f2841417
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.5.inst.cfg
new file mode 100644
index 0000000000..f0d78f4d4d
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.6.inst.cfg
new file mode 100644
index 0000000000..8194aaf87a
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_0.8.inst.cfg
new file mode 100644
index 0000000000..2ccc1efa62
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_A10Pro_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_A10Pro_1.0.inst.cfg
new file mode 100644
index 0000000000..0f35c3f2a4
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A10Pro_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A10Pro
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.2.inst.cfg
new file mode 100644
index 0000000000..076e44cd77
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.3.inst.cfg
new file mode 100644
index 0000000000..1056713d8f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.4.inst.cfg
new file mode 100644
index 0000000000..e86e766648
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.5.inst.cfg
new file mode 100644
index 0000000000..02a5affbbb
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.6.inst.cfg
new file mode 100644
index 0000000000..2b857bb33f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_0.8.inst.cfg
new file mode 100644
index 0000000000..d0fce8e2e4
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_A20_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_A20_1.0.inst.cfg
new file mode 100644
index 0000000000..7dc1ae7151
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A20_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A20
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.2.inst.cfg
new file mode 100644
index 0000000000..19e741a6d0
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.3.inst.cfg
new file mode 100644
index 0000000000..cb0e6454b8
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.4.inst.cfg
new file mode 100644
index 0000000000..e0b5ec3a98
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.5.inst.cfg
new file mode 100644
index 0000000000..9cb1ab9fed
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.6.inst.cfg
new file mode 100644
index 0000000000..d86b384cf9
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_0.8.inst.cfg
new file mode 100644
index 0000000000..fe5259b438
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_A30Pro_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_A30Pro_1.0.inst.cfg
new file mode 100644
index 0000000000..8f38339613
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_A30Pro_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_A30Pro
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.2.inst.cfg
new file mode 100644
index 0000000000..c90d24537d
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.3.inst.cfg
new file mode 100644
index 0000000000..278e10c895
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.4.inst.cfg
new file mode 100644
index 0000000000..50e08b8dd4
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.5.inst.cfg
new file mode 100644
index 0000000000..06335141b7
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.6.inst.cfg
new file mode 100644
index 0000000000..7b2a103a9e
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_0.8.inst.cfg
new file mode 100644
index 0000000000..b299d1642c
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_E180_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_E180_1.0.inst.cfg
new file mode 100644
index 0000000000..3e9a1df2fa
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_E180_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_E180
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.2.inst.cfg
new file mode 100644
index 0000000000..c20936e103
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.3.inst.cfg
new file mode 100644
index 0000000000..46e196c944
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.4.inst.cfg
new file mode 100644
index 0000000000..1b646a11b1
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.5.inst.cfg
new file mode 100644
index 0000000000..105455ac4f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.6.inst.cfg
new file mode 100644
index 0000000000..17f9e1814f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.8.inst.cfg
new file mode 100644
index 0000000000..b9335595b5
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_GiantArmD200_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_GiantArmD200_1.0.inst.cfg
new file mode 100644
index 0000000000..e3dfbf2039
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_GiantArmD200_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_GiantArmD200
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.2.inst.cfg
new file mode 100644
index 0000000000..8ba4e2a3a1
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.3.inst.cfg
new file mode 100644
index 0000000000..b9cc4ef081
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.4.inst.cfg
new file mode 100644
index 0000000000..d0d2ed8c78
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.5.inst.cfg
new file mode 100644
index 0000000000..210a37d790
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.6.inst.cfg
new file mode 100644
index 0000000000..00922b7c82
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_0.8.inst.cfg
new file mode 100644
index 0000000000..4ba44d737f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProB_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProB_1.0.inst.cfg
new file mode 100644
index 0000000000..789e8e3434
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProB_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProB
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.2.inst.cfg
new file mode 100644
index 0000000000..715e1dcb7c
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.3.inst.cfg
new file mode 100644
index 0000000000..58db0e7d88
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.4.inst.cfg
new file mode 100644
index 0000000000..d92a26d4a5
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.5.inst.cfg
new file mode 100644
index 0000000000..d3bb55f066
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.6.inst.cfg
new file mode 100644
index 0000000000..641fe2f834
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_0.8.inst.cfg
new file mode 100644
index 0000000000..dd7a87dae9
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_I3ProW_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_I3ProW_1.0.inst.cfg
new file mode 100644
index 0000000000..7c70a2cb91
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_I3ProW_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_I3ProW
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.2.inst.cfg
new file mode 100644
index 0000000000..8efe819e25
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.3.inst.cfg
new file mode 100644
index 0000000000..464db71752
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.4.inst.cfg
new file mode 100644
index 0000000000..fdac731888
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.5.inst.cfg
new file mode 100644
index 0000000000..0b3764f263
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.6.inst.cfg
new file mode 100644
index 0000000000..47f690bc35
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.8.inst.cfg
new file mode 100644
index 0000000000..3d5508ad45
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator2_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator2_1.0.inst.cfg
new file mode 100644
index 0000000000..b9d738adac
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator2_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator2
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.2.inst.cfg
new file mode 100644
index 0000000000..65c79a8ce1
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.3.inst.cfg
new file mode 100644
index 0000000000..1d21372f1d
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.4.inst.cfg
new file mode 100644
index 0000000000..704c1515d0
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.5.inst.cfg
new file mode 100644
index 0000000000..a81370aee0
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.6.inst.cfg
new file mode 100644
index 0000000000..f074921b75
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_0.8.inst.cfg
new file mode 100644
index 0000000000..dad45302db
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeCreator_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeCreator_1.0.inst.cfg
new file mode 100644
index 0000000000..d57c22fee6
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeCreator_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeCreator
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.2.inst.cfg
new file mode 100644
index 0000000000..9f5b1bfe50
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.3.inst.cfg
new file mode 100644
index 0000000000..b6b5984b9c
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.4.inst.cfg
new file mode 100644
index 0000000000..76f1a300b2
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.5.inst.cfg
new file mode 100644
index 0000000000..4f300d6b4f
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.6.inst.cfg
new file mode 100644
index 0000000000..b689dcb89b
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_0.8.inst.cfg
new file mode 100644
index 0000000000..271c26dfc4
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MeDucer_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MeDucer_1.0.inst.cfg
new file mode 100644
index 0000000000..1f28b152f8
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MeDucer_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MeDucer
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.2.inst.cfg
new file mode 100644
index 0000000000..d21a33f196
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.3.inst.cfg
new file mode 100644
index 0000000000..dcd3cb36a5
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.4.inst.cfg
new file mode 100644
index 0000000000..777416c7a7
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.5.inst.cfg
new file mode 100644
index 0000000000..028aa61c60
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.6.inst.cfg
new file mode 100644
index 0000000000..584ab2729d
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_0.8.inst.cfg
new file mode 100644
index 0000000000..d44b4cb333
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarMax_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarMax_1.0.inst.cfg
new file mode 100644
index 0000000000..25570aae27
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarMax_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarMax
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.2.inst.cfg
new file mode 100644
index 0000000000..ce3bcdfe3e
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.3.inst.cfg
new file mode 100644
index 0000000000..5607a70f96
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.4.inst.cfg
new file mode 100644
index 0000000000..14d4c40a22
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.5.inst.cfg
new file mode 100644
index 0000000000..ac28de5b0c
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.6.inst.cfg
new file mode 100644
index 0000000000..bb61ce74f5
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_0.8.inst.cfg
new file mode 100644
index 0000000000..a41cfc34f8
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarPro_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarPro_1.0.inst.cfg
new file mode 100644
index 0000000000..8f7f9e7a50
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarPro_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarPro
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.2.inst.cfg
new file mode 100644
index 0000000000..76b1786f7b
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.3.inst.cfg
new file mode 100644
index 0000000000..e5c739886a
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.4.inst.cfg
new file mode 100644
index 0000000000..36ed7a163b
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.5.inst.cfg
new file mode 100644
index 0000000000..aa613c7969
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.6.inst.cfg
new file mode 100644
index 0000000000..e773157dac
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_0.8.inst.cfg
new file mode 100644
index 0000000000..333eb2446e
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_MizarS_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_MizarS_1.0.inst.cfg
new file mode 100644
index 0000000000..71582e9473
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_MizarS_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_MizarS
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.2.inst.cfg
new file mode 100644
index 0000000000..c137a471c8
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.3.inst.cfg
new file mode 100644
index 0000000000..b5dfa3afa0
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.4.inst.cfg
new file mode 100644
index 0000000000..70419eece2
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.5.inst.cfg
new file mode 100644
index 0000000000..bc728d2fd9
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.6.inst.cfg
new file mode 100644
index 0000000000..2a6962a962
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_0.8.inst.cfg
new file mode 100644
index 0000000000..52a88d5984
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_Mizar_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_Mizar_1.0.inst.cfg
new file mode 100644
index 0000000000..920262d551
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Mizar_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Mizar
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.2.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.2.inst.cfg
new file mode 100644
index 0000000000..6c6f5ca2a6
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.2.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.2mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.2
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.3.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.3.inst.cfg
new file mode 100644
index 0000000000..4a13f8db49
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.3.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.3mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.3
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.4.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.4.inst.cfg
new file mode 100644
index 0000000000..a106d17329
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.4.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.4mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.5.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.5.inst.cfg
new file mode 100644
index 0000000000..54cdc1a17b
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.5.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.5mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.5
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.6.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.6.inst.cfg
new file mode 100644
index 0000000000..99295e5f17
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.6.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.6mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.6
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_0.8.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_0.8.inst.cfg
new file mode 100644
index 0000000000..4d0e5b7ab6
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_0.8.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 0.8mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 0.8
+
diff --git a/resources/variants/geeetech_variants/geeetech_Thunder_1.0.inst.cfg b/resources/variants/geeetech_variants/geeetech_Thunder_1.0.inst.cfg
new file mode 100644
index 0000000000..547976d730
--- /dev/null
+++ b/resources/variants/geeetech_variants/geeetech_Thunder_1.0.inst.cfg
@@ -0,0 +1,13 @@
+[general]
+definition = geeetech_Thunder
+name = 1.0mm Nozzle
+version = 4
+
+[metadata]
+hardware_type = nozzle
+setting_version = 20
+type = variant
+
+[values]
+machine_nozzle_size = 1.0
+
diff --git a/tests/conftest.py b/tests/conftest.py
index efe9141e29..377a525ba7 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -6,6 +6,7 @@
from unittest.mock import MagicMock, patch
import pytest
+from UM.Application import Application
from UM.Qt.QtApplication import QtApplication # QtApplication import is required, even though it isn't used.
from cura.CuraApplication import CuraApplication
@@ -22,6 +23,12 @@ def application() -> CuraApplication:
app = MagicMock()
return app
+@pytest.fixture()
+def um_application() -> Application:
+ app = MagicMock()
+ app.getInstance = MagicMock(return_value=app)
+ return app
+
# Returns a MachineActionManager instance.
@pytest.fixture()
@@ -43,14 +50,15 @@ def container_registry(application, global_stack) -> ContainerRegistry:
@pytest.fixture()
-def extruder_manager(application, container_registry) -> ExtruderManager:
+def extruder_manager(application, um_application, container_registry) -> ExtruderManager:
if ExtruderManager.getInstance() is not None:
# Reset the data
ExtruderManager._ExtruderManager__instance = None
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
- manager = ExtruderManager()
+ with patch("UM.Application.Application.getInstance", um_application):
+ manager = ExtruderManager()
return manager