mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 15:35:53 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura into CURA-7038
This commit is contained in:
commit
4b86400661
8
.github/workflows/cicd.yml
vendored
8
.github/workflows/cicd.yml
vendored
@ -1,6 +1,12 @@
|
|||||||
---
|
---
|
||||||
name: CI/CD
|
name: CI/CD
|
||||||
on: [push, pull_request]
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- 'WIP**'
|
||||||
|
- '4.*'
|
||||||
|
pull_request:
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build and test
|
name: Build and test
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2018 Ultimaker B.V.
|
# Copyright (c) 2019 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import platform
|
import platform
|
||||||
@ -7,13 +7,14 @@ import faulthandler
|
|||||||
import tempfile
|
import tempfile
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import time
|
import uuid
|
||||||
import json
|
import json
|
||||||
import ssl
|
import locale
|
||||||
import urllib.request
|
from typing import cast
|
||||||
import urllib.error
|
|
||||||
|
|
||||||
import certifi
|
from sentry_sdk.hub import Hub
|
||||||
|
from sentry_sdk.utils import event_from_exception
|
||||||
|
from sentry_sdk import configure_scope
|
||||||
|
|
||||||
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl
|
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl
|
||||||
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton
|
from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton
|
||||||
@ -24,7 +25,6 @@ from UM.Logger import Logger
|
|||||||
from UM.View.GL.OpenGL import OpenGL
|
from UM.View.GL.OpenGL import OpenGL
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
from UM.Resources import Resources
|
from UM.Resources import Resources
|
||||||
|
|
||||||
from cura import ApplicationMetadata
|
from cura import ApplicationMetadata
|
||||||
|
|
||||||
catalog = i18nCatalog("cura")
|
catalog = i18nCatalog("cura")
|
||||||
@ -46,9 +46,8 @@ skip_exception_types = [
|
|||||||
GeneratorExit
|
GeneratorExit
|
||||||
]
|
]
|
||||||
|
|
||||||
class CrashHandler:
|
|
||||||
crash_url = "https://stats.ultimaker.com/api/cura"
|
|
||||||
|
|
||||||
|
class CrashHandler:
|
||||||
def __init__(self, exception_type, value, tb, has_started = True):
|
def __init__(self, exception_type, value, tb, has_started = True):
|
||||||
self.exception_type = exception_type
|
self.exception_type = exception_type
|
||||||
self.value = value
|
self.value = value
|
||||||
@ -56,21 +55,20 @@ class CrashHandler:
|
|||||||
self.has_started = has_started
|
self.has_started = has_started
|
||||||
self.dialog = None # Don't create a QDialog before there is a QApplication
|
self.dialog = None # Don't create a QDialog before there is a QApplication
|
||||||
|
|
||||||
# While we create the GUI, the information will be stored for sending afterwards
|
|
||||||
self.data = dict()
|
|
||||||
self.data["time_stamp"] = time.time()
|
|
||||||
|
|
||||||
Logger.log("c", "An uncaught error has occurred!")
|
Logger.log("c", "An uncaught error has occurred!")
|
||||||
for line in traceback.format_exception(exception_type, value, tb):
|
for line in traceback.format_exception(exception_type, value, tb):
|
||||||
for part in line.rstrip("\n").split("\n"):
|
for part in line.rstrip("\n").split("\n"):
|
||||||
Logger.log("c", part)
|
Logger.log("c", part)
|
||||||
|
self.data = {}
|
||||||
# If Cura has fully started, we only show fatal errors.
|
# If Cura has fully started, we only show fatal errors.
|
||||||
# If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash
|
# If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash
|
||||||
# without any information.
|
# without any information.
|
||||||
if has_started and exception_type in skip_exception_types:
|
if has_started and exception_type in skip_exception_types:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
with configure_scope() as scope:
|
||||||
|
scope.set_tag("during_startup", not has_started)
|
||||||
|
|
||||||
if not has_started:
|
if not has_started:
|
||||||
self._send_report_checkbox = None
|
self._send_report_checkbox = None
|
||||||
self.early_crash_dialog = self._createEarlyCrashDialog()
|
self.early_crash_dialog = self._createEarlyCrashDialog()
|
||||||
@ -179,25 +177,42 @@ class CrashHandler:
|
|||||||
try:
|
try:
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
self.cura_version = Application.getInstance().getVersion()
|
self.cura_version = Application.getInstance().getVersion()
|
||||||
|
self.cura_locale = Application.getInstance().getPreferences().getValue("general/language")
|
||||||
except:
|
except:
|
||||||
self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown")
|
self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown")
|
||||||
|
self.cura_locale = "??_??"
|
||||||
|
|
||||||
|
self.data["cura_version"] = self.cura_version
|
||||||
|
self.data["os"] = {"type": platform.system(), "version": platform.version()}
|
||||||
|
self.data["qt_version"] = QT_VERSION_STR
|
||||||
|
self.data["pyqt_version"] = PYQT_VERSION_STR
|
||||||
|
self.data["locale_os"] = locale.getlocale(locale.LC_MESSAGES)[0] if hasattr(locale, "LC_MESSAGES") else \
|
||||||
|
locale.getdefaultlocale()[0]
|
||||||
|
self.data["locale_cura"] = self.cura_locale
|
||||||
|
|
||||||
crash_info = "<b>" + catalog.i18nc("@label Cura version number", "Cura version") + ":</b> " + str(self.cura_version) + "<br/>"
|
crash_info = "<b>" + catalog.i18nc("@label Cura version number", "Cura version") + ":</b> " + str(self.cura_version) + "<br/>"
|
||||||
crash_info += "<b>" + catalog.i18nc("@label Cura build type", "Cura build type") + ":</b> " + str(ApplicationMetadata.CuraBuildType) + "<br/>"
|
crash_info += "<b>" + catalog.i18nc("@label", "Cura language") + ":</b> " + str(self.cura_locale) + "<br/>"
|
||||||
|
crash_info += "<b>" + catalog.i18nc("@label", "OS language") + ":</b> " + str(self.data["locale_os"]) + "<br/>"
|
||||||
crash_info += "<b>" + catalog.i18nc("@label Type of platform", "Platform") + ":</b> " + str(platform.platform()) + "<br/>"
|
crash_info += "<b>" + catalog.i18nc("@label Type of platform", "Platform") + ":</b> " + str(platform.platform()) + "<br/>"
|
||||||
crash_info += "<b>" + catalog.i18nc("@label", "Qt version") + ":</b> " + str(QT_VERSION_STR) + "<br/>"
|
crash_info += "<b>" + catalog.i18nc("@label", "Qt version") + ":</b> " + str(QT_VERSION_STR) + "<br/>"
|
||||||
crash_info += "<b>" + catalog.i18nc("@label", "PyQt version") + ":</b> " + str(PYQT_VERSION_STR) + "<br/>"
|
crash_info += "<b>" + catalog.i18nc("@label", "PyQt version") + ":</b> " + str(PYQT_VERSION_STR) + "<br/>"
|
||||||
crash_info += "<b>" + catalog.i18nc("@label OpenGL version", "OpenGL") + ":</b> " + str(self._getOpenGLInfo()) + "<br/>"
|
crash_info += "<b>" + catalog.i18nc("@label OpenGL version", "OpenGL") + ":</b> " + str(self._getOpenGLInfo()) + "<br/>"
|
||||||
|
|
||||||
label.setText(crash_info)
|
label.setText(crash_info)
|
||||||
|
|
||||||
layout.addWidget(label)
|
layout.addWidget(label)
|
||||||
group.setLayout(layout)
|
group.setLayout(layout)
|
||||||
|
|
||||||
self.data["cura_version"] = self.cura_version
|
with configure_scope() as scope:
|
||||||
self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType
|
scope.set_tag("qt_version", QT_VERSION_STR)
|
||||||
self.data["os"] = {"type": platform.system(), "version": platform.version()}
|
scope.set_tag("pyqt_version", PYQT_VERSION_STR)
|
||||||
self.data["qt_version"] = QT_VERSION_STR
|
scope.set_tag("os", platform.system())
|
||||||
self.data["pyqt_version"] = PYQT_VERSION_STR
|
scope.set_tag("os_version", platform.version())
|
||||||
|
scope.set_tag("locale_os", self.data["locale_os"])
|
||||||
|
scope.set_tag("locale_cura", self.cura_locale)
|
||||||
|
scope.set_tag("is_enterprise", ApplicationMetadata.IsEnterpriseVersion)
|
||||||
|
|
||||||
|
scope.set_user({"id": str(uuid.getnode())})
|
||||||
|
|
||||||
return group
|
return group
|
||||||
|
|
||||||
@ -215,6 +230,30 @@ class CrashHandler:
|
|||||||
|
|
||||||
self.data["opengl"] = {"version": opengl_instance.getOpenGLVersion(), "vendor": opengl_instance.getGPUVendorName(), "type": opengl_instance.getGPUType()}
|
self.data["opengl"] = {"version": opengl_instance.getOpenGLVersion(), "vendor": opengl_instance.getGPUVendorName(), "type": opengl_instance.getGPUType()}
|
||||||
|
|
||||||
|
active_machine_definition_id = "unknown"
|
||||||
|
active_machine_manufacturer = "unknown"
|
||||||
|
|
||||||
|
try:
|
||||||
|
from cura.CuraApplication import CuraApplication
|
||||||
|
application = cast(CuraApplication, Application.getInstance())
|
||||||
|
machine_manager = application.getMachineManager()
|
||||||
|
global_stack = machine_manager.activeMachine
|
||||||
|
if global_stack is None:
|
||||||
|
active_machine_definition_id = "empty"
|
||||||
|
active_machine_manufacturer = "empty"
|
||||||
|
else:
|
||||||
|
active_machine_definition_id = global_stack.definition.getId()
|
||||||
|
active_machine_manufacturer = global_stack.definition.getMetaDataEntry("manufacturer", "unknown")
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
with configure_scope() as scope:
|
||||||
|
scope.set_tag("opengl_version", opengl_instance.getOpenGLVersion())
|
||||||
|
scope.set_tag("gpu_vendor", opengl_instance.getGPUVendorName())
|
||||||
|
scope.set_tag("gpu_type", opengl_instance.getGPUType())
|
||||||
|
scope.set_tag("active_machine", active_machine_definition_id)
|
||||||
|
scope.set_tag("active_machine_manufacturer", active_machine_manufacturer)
|
||||||
|
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def _exceptionInfoWidget(self):
|
def _exceptionInfoWidget(self):
|
||||||
@ -296,6 +335,10 @@ class CrashHandler:
|
|||||||
"module_name": module_name, "version": module_version, "is_plugin": isPlugin}
|
"module_name": module_name, "version": module_version, "is_plugin": isPlugin}
|
||||||
self.data["exception"] = exception_dict
|
self.data["exception"] = exception_dict
|
||||||
|
|
||||||
|
with configure_scope() as scope:
|
||||||
|
scope.set_tag("is_plugin", isPlugin)
|
||||||
|
scope.set_tag("module", module_name)
|
||||||
|
|
||||||
return group
|
return group
|
||||||
|
|
||||||
def _logInfoWidget(self):
|
def _logInfoWidget(self):
|
||||||
@ -353,31 +396,11 @@ class CrashHandler:
|
|||||||
# Before sending data, the user comments are stored
|
# Before sending data, the user comments are stored
|
||||||
self.data["user_info"] = self.user_description_text_area.toPlainText()
|
self.data["user_info"] = self.user_description_text_area.toPlainText()
|
||||||
|
|
||||||
# Convert data to bytes
|
|
||||||
binary_data = json.dumps(self.data).encode("utf-8")
|
|
||||||
|
|
||||||
# CURA-6698 Create an SSL context and use certifi CA certificates for verification.
|
|
||||||
context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2)
|
|
||||||
context.load_verify_locations(cafile = certifi.where())
|
|
||||||
# Submit data
|
|
||||||
kwoptions = {"data": binary_data,
|
|
||||||
"timeout": 5,
|
|
||||||
"context": context}
|
|
||||||
|
|
||||||
Logger.log("i", "Sending crash report info to [%s]...", self.crash_url)
|
|
||||||
if not self.has_started:
|
|
||||||
print("Sending crash report info to [%s]...\n" % self.crash_url)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
f = urllib.request.urlopen(self.crash_url, **kwoptions)
|
hub = Hub.current
|
||||||
Logger.log("i", "Sent crash report info.")
|
event, hint = event_from_exception((self.exception_type, self.value, self.traceback))
|
||||||
if not self.has_started:
|
hub.capture_event(event, hint=hint)
|
||||||
print("Sent crash report info.\n")
|
hub.flush()
|
||||||
f.close()
|
|
||||||
except urllib.error.HTTPError as e:
|
|
||||||
Logger.logException("e", "An HTTP error occurred while trying to send crash report")
|
|
||||||
if not self.has_started:
|
|
||||||
print("An HTTP error occurred while trying to send crash report: %s" % e)
|
|
||||||
except Exception as e: # We don't want any exception to cause problems
|
except Exception as e: # We don't want any exception to cause problems
|
||||||
Logger.logException("e", "An exception occurred while trying to send crash report")
|
Logger.logException("e", "An exception occurred while trying to send crash report")
|
||||||
if not self.has_started:
|
if not self.has_started:
|
||||||
|
@ -60,28 +60,38 @@ class MaterialNode(ContainerNode):
|
|||||||
container_registry = ContainerRegistry.getInstance()
|
container_registry = ContainerRegistry.getInstance()
|
||||||
# Find all quality profiles that fit on this material.
|
# Find all quality profiles that fit on this material.
|
||||||
if not self.variant.machine.has_machine_quality: # Need to find the global qualities.
|
if not self.variant.machine.has_machine_quality: # Need to find the global qualities.
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter")
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = "fdmprinter")
|
||||||
elif not self.variant.machine.has_materials:
|
elif not self.variant.machine.has_materials:
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition)
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition)
|
||||||
else:
|
else:
|
||||||
if self.variant.machine.has_variants:
|
if self.variant.machine.has_variants:
|
||||||
# Need to find the qualities that specify a material profile with the same material type.
|
# Need to find the qualities that specify a material profile with the same material type.
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name, material = self.container_id) # First try by exact material ID.
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition,
|
||||||
|
variant = self.variant.variant_name,
|
||||||
|
material = self.base_file) # First try by exact material ID.
|
||||||
|
# CURA-7070
|
||||||
|
# The quality profiles only reference a material with the material_root_id. They will never state something
|
||||||
|
# such as "generic_pla_ultimaker_s5_AA_0.4". So we search with the "base_file" which is the material_root_id.
|
||||||
else:
|
else:
|
||||||
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.container_id)
|
qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.base_file)
|
||||||
if not qualities:
|
if not qualities:
|
||||||
my_material_type = self.material_type
|
my_material_type = self.material_type
|
||||||
if self.variant.machine.has_variants:
|
if self.variant.machine.has_variants:
|
||||||
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name)
|
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality",
|
||||||
|
definition = self.variant.machine.quality_definition,
|
||||||
|
variant = self.variant.variant_name)
|
||||||
else:
|
else:
|
||||||
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition)
|
qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition)
|
||||||
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type):
|
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type):
|
||||||
qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"]))
|
qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["base_file"]))
|
||||||
|
|
||||||
if not qualities: # No quality profiles found. Go by GUID then.
|
if not qualities: # No quality profiles found. Go by GUID then.
|
||||||
my_guid = self.guid
|
my_guid = self.guid
|
||||||
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid):
|
for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid):
|
||||||
qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"]))
|
qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["base_file"]))
|
||||||
|
|
||||||
if not qualities:
|
if not qualities:
|
||||||
# There are still some machines that should use global profiles in the extruder, so do that now.
|
# There are still some machines that should use global profiles in the extruder, so do that now.
|
||||||
|
@ -43,7 +43,7 @@ class CuraFormulaFunctions:
|
|||||||
extruder_stack = global_stack.extruderList[int(extruder_position)]
|
extruder_stack = global_stack.extruderList[int(extruder_position)]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
if extruder_position != 0:
|
if extruder_position != 0:
|
||||||
Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result form extruder 0 instead" % (property_key, extruder_position))
|
Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result from extruder 0 instead" % (property_key, extruder_position))
|
||||||
# This fixes a very specific fringe case; If a profile was created for a custom printer and one of the
|
# This fixes a very specific fringe case; If a profile was created for a custom printer and one of the
|
||||||
# extruder settings has been set to non zero and the profile is loaded for a machine that has only a single extruder
|
# extruder settings has been set to non zero and the profile is loaded for a machine that has only a single extruder
|
||||||
# it would cause all kinds of issues (and eventually a crash).
|
# it would cause all kinds of issues (and eventually a crash).
|
||||||
|
@ -894,8 +894,8 @@ class MachineManager(QObject):
|
|||||||
|
|
||||||
@pyqtSlot(int, bool)
|
@pyqtSlot(int, bool)
|
||||||
def setExtruderEnabled(self, position: int, enabled: bool) -> None:
|
def setExtruderEnabled(self, position: int, enabled: bool) -> None:
|
||||||
if self._global_container_stack is None:
|
if self._global_container_stack is None or str(position) not in self._global_container_stack.extruders:
|
||||||
Logger.log("w", "Could not find extruder on position %s", position)
|
Logger.log("w", "Could not find extruder on position %s.", position)
|
||||||
return
|
return
|
||||||
extruder = self._global_container_stack.extruderList[position]
|
extruder = self._global_container_stack.extruderList[position]
|
||||||
|
|
||||||
|
20
cura_app.py
20
cura_app.py
@ -9,8 +9,11 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from UM.Platform import Platform
|
from UM.Platform import Platform
|
||||||
|
from cura import ApplicationMetadata
|
||||||
from cura.ApplicationMetadata import CuraAppName
|
from cura.ApplicationMetadata import CuraAppName
|
||||||
|
|
||||||
|
import sentry_sdk
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(prog = "cura",
|
parser = argparse.ArgumentParser(prog = "cura",
|
||||||
add_help = False)
|
add_help = False)
|
||||||
parser.add_argument("--debug",
|
parser.add_argument("--debug",
|
||||||
@ -18,8 +21,25 @@ parser.add_argument("--debug",
|
|||||||
default = False,
|
default = False,
|
||||||
help = "Turn on the debug mode by setting this option."
|
help = "Turn on the debug mode by setting this option."
|
||||||
)
|
)
|
||||||
|
|
||||||
known_args = vars(parser.parse_known_args()[0])
|
known_args = vars(parser.parse_known_args()[0])
|
||||||
|
|
||||||
|
sentry_env = "production"
|
||||||
|
if ApplicationMetadata.CuraVersion == "master":
|
||||||
|
sentry_env = "development"
|
||||||
|
try:
|
||||||
|
if ApplicationMetadata.CuraVersion.split(".")[2] == "99":
|
||||||
|
sentry_env = "nightly"
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
sentry_sdk.init("https://5034bf0054fb4b889f82896326e79b13@sentry.io/1821564",
|
||||||
|
environment = sentry_env,
|
||||||
|
release = "cura%s" % ApplicationMetadata.CuraVersion,
|
||||||
|
default_integrations = False,
|
||||||
|
max_breadcrumbs = 300,
|
||||||
|
server_name = "cura")
|
||||||
|
|
||||||
if not known_args["debug"]:
|
if not known_args["debug"]:
|
||||||
def get_cura_dir_path():
|
def get_cura_dir_path():
|
||||||
if Platform.isWindows():
|
if Platform.isWindows():
|
||||||
|
1
docs/Profile Stack.drawio
Normal file
1
docs/Profile Stack.drawio
Normal file
@ -0,0 +1 @@
|
|||||||
|
<mxfile host="www.draw.io" modified="2019-12-20T12:41:33.716Z" agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0" etag="exp7abRcULgdJsv-qAei" version="12.4.3" type="device" pages="1"><diagram id="05EojhSyumsKE0fvOSX8" name="Page-1">7ZtNb9s4EIZ/jY+70LftY+NkuwskQFrvts2pYCRaIkqLBkXXcn79Di3Ssk3ZTR195EDAB82IpIZ8ZgzxBTXyZ8vyI0er7IElmI48JylH/u3I89zA80by5yTbyjOOxpUj5SRRjWrHnLxg5XSUd00SXBw1FIxRQVbHzpjlOY7FkQ9xzjbHzRaMHj91hVJsOOYxoqb3K0lEVnkn3rj2/41Jmuknu9G0urNEurGaSZGhhG0OXP7dyJ9xxkR1tSxnmMrF0+tS9fvrzN19YBzn4jUdvnDvJQzwv+sXOp0/lfHk+3fxh1+N8hPRtZrwXSn4OsF8LlD8Q0Uutno5ig1ZUpSDdbNguZirOw7YcUZoco+2bC3DKWR3bd1kjJMXaI8o3HLBAbe5ULS9SI5GKJ0xyjg4crZ7QN2piqV6DMcFdHvU03ZPXA+oPGp4jwqhA2SUolVBnnchy45LxFOS3zAh2FI1UuuBucDl2YV29/gg7zFbYsG30ER3mCriKuXdsbI3dQK5gfJlB8nj+YFKXJW06X7smitcKLS/gTkwMP9XYG7QhTmLHRzOfuATGg2AECVpDibFC9lNLhqByvmg3IKt5GArFJM8vd+1uQ1qz2c1celi0HdBd9WRkSTBueTHBBLoeZ9fK0ZysVuY8AZ+sH4z589wFELgM7Dd2oafbM7FjOUwF0R23DBkwgbLbHgd5PP1YpJXpCGTXwc66ohzaHD+tAZKQsY4y1Cewl+phd4u9NAbGHpkQP8nF3JGlnS7pMeTgUmPz5e3Rd0qatcJBmY9MVg/IIE5gVcoC7tl2P5rX9C6gj01YH9BgNr+h7fPOhz6HU3vbA9g3+IFyYkgLLfvad2Rnwz9oua6F8lb3u1uxpyhX9c8k/dHyp61nmG1lbdrK4GWEw8g+06v2opWOK248tZ6Psf+vLrSjLqzejbVUiuvdI69QV/pGbupnlqBpRvWDQpLz6wvKKgWdruwmzSWnmmb0qkVWTrD3aCy9Izb1E+tzNIV7QadpWfapoJqdZZe0DcILT2jN/VUK7R0uDFrUFr6Be6ae3B7juWtWosfvrtzLK65A7day1UlXVXM+z3J4pqbbqu1dI598LMsrrn/tlpLN6wHP83imrtvq7V0BHv48yyuufm2WktnuAc/0eKau2+rtXRFe/gzLZc33PaFrTP0gx9q0Z+3WK2ln43Z4KdafBO4gRnnyQf58RVYMUVFQWKpg4illk1gCfj2m1x2WE9lPikKO+O2PLK22iqJOOgG1pMeEa7rTtLQfargcGJ853Wig8AE2JrH+NLUq3YC8RRfo5cdMAsbkGkfxxQJ8vM43iaO6gmPMm9H58/I6BLVQ1TzVL3qbDAG8oLjgaLpyUDVQhgDAXq0PWim6upswF50ErDvXIzLDy62h4sqgjrH9wzekPbmYa7fT/sr0lcaj/CaDPFjflgUV5RPi6Wgc+qd10LknaTK+MpaiMa/KKqWaiE4DbjfWgCz/iK1al5/1+vf/Q8=</diagram></mxfile>
|
BIN
docs/Profile Stack.png
Normal file
BIN
docs/Profile Stack.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
1
docs/Profile Structure.drawio
Normal file
1
docs/Profile Structure.drawio
Normal file
@ -0,0 +1 @@
|
|||||||
|
<mxfile host="www.draw.io" modified="2019-12-20T12:34:56.339Z" agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0" etag="1NLsmsxIqXUmOJee4m9D" version="12.4.3" type="device" pages="1"><diagram id="K0t5C8WxT4tyKudoHXNk" name="Page-1">7VzbcqM4EP0aP+4WSFzsx8SZmd2tpCqTbO1kn1KKkW3VYOQBObHn61cyF0MLM9jhkmyo8gMSLXQ5R+rTDckIT1fbLyFZL2+4R/0RMrztCF+NEDIthEbqZ3i7uMZ13LhiETIvMTpU3LOfNKk0ktoN82hUMBSc+4Kti5UzHgR0Jgp1JAz5S9Fszv1ir2uyoFrF/Yz4eu035ollXDtG7qH+D8oWy7Rn05nEd1YkNU5mEi2Jx19yVfjTCE9DzkV8tdpOqa8WL12XuN3nI3ezgYU0EHUa/OXdPfz4exV+fRLWl92tG9388/m35CnPxN8kE/4zEOqB8ZDFLl2H6IWtfBLI0uWcB+I+uWPI8mzJfO+a7PhGjSMSZPY9LV0uech+Snviy1umrJC3Q5HAjFXrOfP9Kfd5KCsCvu/g0OhePSzpJqSRbHabztcEVTdkWzC8JpFIB8h9n6wj9rQfsmq4IuGCBZdcCL5KjJKFoKGg26MrbGa4ScJTvqIi3EmTtIGTQJ1w3URWXH45MMecJDbLPGvShiRh6yJ7dtbdnWQ3CRZyCll/2SZJ+7MMrT+npDvkFHsjvqBhQAS95JvAi/Iskhe5mR6q9tw6gWdY4xnb8+xxJrtdcDVTOSi8vciQyHFPIiL21An5dwq4UkIf4rNFIIs+natmClImN/RFUi34Wj1sTWYsWFzvba6sQ81dsk6qisu2c3+/aZfM82ig2MUFEeQpY/+ay5nsF9K+lD+53FPjd3tky4FPZdk8lOVPmYdiygM5F8L2rKKSpy9UcbUeBY9vY52XCS+wTotSGkJe5FlYIMSp6Fsa+vJ0pCGTp8KAdbNY207PWE80rD06ZwETjAcD2g2jPUY9o516oBzcz0RubKUghgO9LdhNY9w37rpw/LGROIndo9it6YB404jjmlKyNcRtDfCvMeCdhApyWv+vUMEtSndslmg0qyxUwBWhwqsAdgaR1txutit3MyoRaWVgt7aZ3eH07hJvu0SmdYr3eFBp3aPuloi0TlE39SM9H4sNyLeFvGmUqLVuoddPeA1lGngXKkMuSzOfRBGbKUElVqn+olsmHpJFV9f/qmu5snHpapu7dbVLC4Ec/UO+kGuliodm+1LaLh4c9bRkPBBUcgJ8E85o1dTT1wRSuNEqDN1yDHOY2SWQpXUh9Ylgz8XxVuRvbxVtcwJwXBSAaAIeEc8zaZVP64MHZe8XMl8DHhSvg/YgCT3Z5cySbXV8wBgM2DUrxwXtsWsDVscjaDTNbOqO7qiIHcKUX4cpFgDRrKtkshOw+ZNNTzA+kYg+ylUfhOsZaYdxpSfrPVJBeoJxyCe3h3fvkQrSE4tZqDKA3SzYvQcoqSh9lUo9U3Gm6jZVunXUbYMq1aopUmN315dKxSBNmanWU1WqBT5VQJZbS6U2JQyR/gr62LEy6MLTdSEa1wx40yOn+aNEfz8RkNWgCE93GvFWecOKsDqrNeDdLN79K0I9pv8oImFcUySgI+nIbkSCbYAMlHumSLBtmMoCD2oolQXFiGUYleOC9hhhwOoWUln4pMB3EC2/Fi0OyJRip+bRlh6BjR9tWA92pf3gwk51YdgoB/6tSBasRx+nu7AzXNFbeBvj1PRh+Mjm7caHWeDTffvcQNcGvsKG3+s05cMs4MOSv0g56sOgvVF4fdOSD9ODso/Ce/Q+eI9AIO+cy3voXG2rHd7bE+DErUn1fpz0wXs9RO2W92Z/vDfeBe8d+HYahhp1ee+CDKkFN1BDvHcBj5FZfd5D+2543+BXJ++N93W/Ouk3VncMSItzz3sQq2O7Hd7DASMLV4/LgBu7i1hd/ybhdN6fyeFzvtJqkPeTd3Hcm4AVDlTldWlvwhRVS8e9Cd+XmdUyB9pbdnVKS3MPp9p34U4sPT3SrTvpMWyuK6P6dSdaZnRy5r6C8TduKXzQ30Pb1ePqI/VroQ/L+7pRc7+fRcDX35ror0178BWw1VK2CI/h9qp2J9DenLzquJfFw/85ic0P/y0Gf/oP</diagram></mxfile>
|
BIN
docs/Profile Structure.png
Normal file
BIN
docs/Profile Structure.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
@ -790,7 +790,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
|||||||
container_info = ContainerInfo(None, None, None)
|
container_info = ContainerInfo(None, None, None)
|
||||||
quality_changes_info.extruder_info_dict["0"] = container_info
|
quality_changes_info.extruder_info_dict["0"] = container_info
|
||||||
# If the global stack we're "targeting" has never been active, but was updated from Cura 3.4,
|
# If the global stack we're "targeting" has never been active, but was updated from Cura 3.4,
|
||||||
# it might not have it's extruders set properly.
|
# it might not have its extruders set properly.
|
||||||
if not global_stack.extruders:
|
if not global_stack.extruders:
|
||||||
ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack)
|
ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack)
|
||||||
extruder_stack = global_stack.extruders["0"]
|
extruder_stack = global_stack.extruders["0"]
|
||||||
|
@ -97,7 +97,6 @@ Cura.MachineAction
|
|||||||
text: Cura.MachineManager.activeMachine.name
|
text: Cura.MachineManager.activeMachine.name
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
font: UM.Theme.getFont("large_bold")
|
font: UM.Theme.getFont("large_bold")
|
||||||
color: UM.Theme.getColor("text")
|
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,11 +40,13 @@ Item
|
|||||||
// update active type label
|
// update active type label
|
||||||
for (var button in meshTypeButtons.children)
|
for (var button in meshTypeButtons.children)
|
||||||
{
|
{
|
||||||
if (meshTypeButtons.children[button].checked){
|
if (meshTypeButtons.children[button].checked)
|
||||||
|
{
|
||||||
meshTypeLabel.text = catalog.i18nc("@label", "Mesh Type") + ": " + meshTypeButtons.children[button].text
|
meshTypeLabel.text = catalog.i18nc("@label", "Mesh Type") + ": " + meshTypeButtons.children[button].text
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
visibility_handler.addSkipResetSetting(currentMeshType)
|
||||||
}
|
}
|
||||||
|
|
||||||
function setOverhangsMeshType()
|
function setOverhangsMeshType()
|
||||||
@ -203,6 +205,7 @@ Item
|
|||||||
|
|
||||||
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
|
||||||
{
|
{
|
||||||
|
id: visibility_handler
|
||||||
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
|
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,10 +322,7 @@ Item
|
|||||||
Connections
|
Connections
|
||||||
{
|
{
|
||||||
target: inheritStackProvider
|
target: inheritStackProvider
|
||||||
onPropertiesChanged:
|
onPropertiesChanged: provider.forcePropertiesChanged()
|
||||||
{
|
|
||||||
provider.forcePropertiesChanged()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections
|
Connections
|
||||||
@ -458,5 +458,4 @@ Item
|
|||||||
|
|
||||||
Cura.SettingUnknown { }
|
Cura.SettingUnknown { }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,7 @@ UM.Dialog
|
|||||||
// force updating the model to sync it with addedSettingsModel
|
// force updating the model to sync it with addedSettingsModel
|
||||||
if (visible)
|
if (visible)
|
||||||
{
|
{
|
||||||
// Set skip setting, it will prevent from resetting selected mesh_type
|
|
||||||
contents.model.visibilityHandler.addSkipResetSetting(currentMeshType)
|
|
||||||
listview.model.forceUpdate()
|
listview.model.forceUpdate()
|
||||||
|
|
||||||
updateFilter()
|
updateFilter()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,10 +40,12 @@ UM.Dialog
|
|||||||
listview.model.filter = new_filter
|
listview.model.filter = new_filter
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
TextField
|
||||||
|
{
|
||||||
id: filterInput
|
id: filterInput
|
||||||
|
|
||||||
anchors {
|
anchors
|
||||||
|
{
|
||||||
top: parent.top
|
top: parent.top
|
||||||
left: parent.left
|
left: parent.left
|
||||||
right: toggleShowAll.left
|
right: toggleShowAll.left
|
||||||
@ -62,17 +61,15 @@ UM.Dialog
|
|||||||
{
|
{
|
||||||
id: toggleShowAll
|
id: toggleShowAll
|
||||||
|
|
||||||
anchors {
|
anchors
|
||||||
|
{
|
||||||
top: parent.top
|
top: parent.top
|
||||||
right: parent.right
|
right: parent.right
|
||||||
}
|
}
|
||||||
|
|
||||||
text: catalog.i18nc("@label:checkbox", "Show all")
|
text: catalog.i18nc("@label:checkbox", "Show all")
|
||||||
checked: listview.model.showAll
|
checked: listview.model.showAll
|
||||||
onClicked:
|
onClicked: listview.model.showAll = checked
|
||||||
{
|
|
||||||
listview.model.showAll = checked
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScrollView
|
ScrollView
|
||||||
@ -129,11 +126,10 @@ UM.Dialog
|
|||||||
}
|
}
|
||||||
|
|
||||||
rightButtons: [
|
rightButtons: [
|
||||||
Button {
|
Button
|
||||||
|
{
|
||||||
text: catalog.i18nc("@action:button", "Close")
|
text: catalog.i18nc("@action:button", "Close")
|
||||||
onClicked: {
|
onClicked: settingPickDialog.visible = false
|
||||||
settingPickDialog.visible = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
55
plugins/SentryLogger/SentryLogger.py
Normal file
55
plugins/SentryLogger/SentryLogger.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# Copyright (c) 2019 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
from UM.Logger import LogOutput
|
||||||
|
from typing import Set
|
||||||
|
from sentry_sdk import add_breadcrumb
|
||||||
|
from typing import Optional
|
||||||
|
import os
|
||||||
|
|
||||||
|
home_dir = os.path.expanduser("~")
|
||||||
|
|
||||||
|
|
||||||
|
class SentryLogger(LogOutput):
|
||||||
|
# Sentry (https://sentry.io) is the service that Cura uses for logging crashes. This logger ensures that the
|
||||||
|
# regular log entries that we create are added as breadcrumbs so when a crash actually happens, they are already
|
||||||
|
# processed and ready for sending.
|
||||||
|
# Note that this only prepares them for sending. It only sends them when the user actually agrees to sending the
|
||||||
|
# information.
|
||||||
|
|
||||||
|
_levels = {
|
||||||
|
"w": "warning",
|
||||||
|
"i": "info",
|
||||||
|
"c": "fatal",
|
||||||
|
"e": "error",
|
||||||
|
"d": "debug"
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__()
|
||||||
|
self._show_once = set() # type: Set[str]
|
||||||
|
|
||||||
|
## Log the message to the sentry hub as a breadcrumb
|
||||||
|
# \param log_type "e" (error), "i"(info), "d"(debug), "w"(warning) or "c"(critical) (can postfix with "_once")
|
||||||
|
# \param message String containing message to be logged
|
||||||
|
def log(self, log_type: str, message: str) -> None:
|
||||||
|
level = self._translateLogType(log_type)
|
||||||
|
message = self._pruneSensitiveData(message)
|
||||||
|
if level is None:
|
||||||
|
if message not in self._show_once:
|
||||||
|
level = self._translateLogType(log_type[0])
|
||||||
|
if level is not None:
|
||||||
|
self._show_once.add(message)
|
||||||
|
add_breadcrumb(level = level, message = message)
|
||||||
|
else:
|
||||||
|
add_breadcrumb(level = level, message = message)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _pruneSensitiveData(message):
|
||||||
|
if home_dir in message:
|
||||||
|
message = message.replace(home_dir, "<user_home>")
|
||||||
|
return message
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _translateLogType(log_type: str) -> Optional[str]:
|
||||||
|
return SentryLogger._levels.get(log_type)
|
16
plugins/SentryLogger/__init__.py
Normal file
16
plugins/SentryLogger/__init__.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Copyright (c) 2019 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
from typing import TYPE_CHECKING, Dict, Any
|
||||||
|
|
||||||
|
from . import SentryLogger
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from UM.Application import Application
|
||||||
|
|
||||||
|
|
||||||
|
def getMetaData() -> Dict[str, Any]:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def register(app: "Application") -> Dict[str, Any]:
|
||||||
|
return {"logger": SentryLogger.SentryLogger()}
|
8
plugins/SentryLogger/plugin.json
Normal file
8
plugins/SentryLogger/plugin.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"name": "Sentry Logger",
|
||||||
|
"author": "Ultimaker B.V.",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Logs certain events so that they can be used by the crash reporter",
|
||||||
|
"api": "7.0",
|
||||||
|
"i18n-catalog": "cura"
|
||||||
|
}
|
@ -65,10 +65,7 @@ class SolidView(View):
|
|||||||
else:
|
else:
|
||||||
self._support_angle = support_angle_stack.getProperty("support_angle", "value")
|
self._support_angle = support_angle_stack.getProperty("support_angle", "value")
|
||||||
|
|
||||||
def beginRendering(self):
|
def _checkSetup(self):
|
||||||
scene = self.getController().getScene()
|
|
||||||
renderer = self.getRenderer()
|
|
||||||
|
|
||||||
if not self._extruders_model:
|
if not self._extruders_model:
|
||||||
self._extruders_model = Application.getInstance().getExtrudersModel()
|
self._extruders_model = Application.getInstance().getExtrudersModel()
|
||||||
|
|
||||||
@ -95,6 +92,12 @@ class SolidView(View):
|
|||||||
self._support_mesh_shader.setUniformValue("u_vertical_stripes", True)
|
self._support_mesh_shader.setUniformValue("u_vertical_stripes", True)
|
||||||
self._support_mesh_shader.setUniformValue("u_width", 5.0)
|
self._support_mesh_shader.setUniformValue("u_width", 5.0)
|
||||||
|
|
||||||
|
def beginRendering(self):
|
||||||
|
scene = self.getController().getScene()
|
||||||
|
renderer = self.getRenderer()
|
||||||
|
|
||||||
|
self._checkSetup()
|
||||||
|
|
||||||
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||||
if global_container_stack:
|
if global_container_stack:
|
||||||
if Application.getInstance().getPreferences().getValue("view/show_overhang"):
|
if Application.getInstance().getPreferences().getValue("view/show_overhang"):
|
||||||
|
@ -3,10 +3,17 @@ from typing import Tuple, List
|
|||||||
import io
|
import io
|
||||||
from UM.VersionUpgrade import VersionUpgrade
|
from UM.VersionUpgrade import VersionUpgrade
|
||||||
|
|
||||||
# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon
|
# Settings that were merged into one. Each one is a pair of settings. If both
|
||||||
# When both are present, machine_head_polygon will be removed
|
# are overwritten, the key wins. If only the key or the value is overwritten,
|
||||||
# When only one of the two is present, it's value will be used
|
# that value is used in the key.
|
||||||
|
_merged_settings = {
|
||||||
|
"machine_head_with_fans_polygon": "machine_head_polygon",
|
||||||
|
"support_wall_count": "support_tree_wall_count"
|
||||||
|
}
|
||||||
|
|
||||||
|
_removed_settings = {
|
||||||
|
"support_tree_wall_thickness"
|
||||||
|
}
|
||||||
|
|
||||||
class VersionUpgrade44to45(VersionUpgrade):
|
class VersionUpgrade44to45(VersionUpgrade):
|
||||||
def getCfgVersion(self, serialised: str) -> int:
|
def getCfgVersion(self, serialised: str) -> int:
|
||||||
@ -42,13 +49,19 @@ class VersionUpgrade44to45(VersionUpgrade):
|
|||||||
parser["metadata"]["setting_version"] = "11"
|
parser["metadata"]["setting_version"] = "11"
|
||||||
|
|
||||||
if "values" in parser:
|
if "values" in parser:
|
||||||
# merge machine_head_with_fans_polygon (preferred) and machine_head_polygon
|
# Merged settings: When two settings are merged, one is preferred.
|
||||||
if "machine_head_with_fans_polygon" in parser["values"]:
|
# If the preferred one is available, that value is taken regardless
|
||||||
if "machine_head_polygon" in parser["values"]:
|
# of the other one. If only the non-preferred one is available, that
|
||||||
del parser["values"]["machine_head_polygon"]
|
# value is moved to the preferred setting value.
|
||||||
elif "machine_head_polygon" in parser["values"]:
|
for preferred, removed in _merged_settings.items():
|
||||||
parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"]
|
if removed in parser["values"]:
|
||||||
del parser["values"]["machine_head_polygon"]
|
if preferred not in parser["values"]:
|
||||||
|
parser["values"][preferred] = parser["values"][removed]
|
||||||
|
del parser["values"][removed]
|
||||||
|
|
||||||
|
for removed in _removed_settings:
|
||||||
|
if removed in parser["values"]:
|
||||||
|
del parser["values"][removed]
|
||||||
|
|
||||||
result = io.StringIO()
|
result = io.StringIO()
|
||||||
parser.write(result)
|
parser.write(result)
|
||||||
|
@ -1106,6 +1106,12 @@ class XmlMaterialProfile(InstanceContainer):
|
|||||||
"break preparation speed": "material_break_preparation_speed",
|
"break preparation speed": "material_break_preparation_speed",
|
||||||
"break preparation temperature": "material_break_preparation_temperature",
|
"break preparation temperature": "material_break_preparation_temperature",
|
||||||
"break position": "material_break_retracted_position",
|
"break position": "material_break_retracted_position",
|
||||||
|
"flush purge speed": "material_flush_purge_speed",
|
||||||
|
"flush purge length": "material_flush_purge_length",
|
||||||
|
"end of filament purge speed": "material_end_of_filament_purge_speed",
|
||||||
|
"end of filament purge length": "material_end_of_filament_purge_length",
|
||||||
|
"maximum park duration": "material_maximum_park_duration",
|
||||||
|
"no load move factor": "material_no_load_move_factor",
|
||||||
"break speed": "material_break_speed",
|
"break speed": "material_break_speed",
|
||||||
"break temperature": "material_break_temperature"
|
"break temperature": "material_break_temperature"
|
||||||
} # type: Dict[str, str]
|
} # type: Dict[str, str]
|
||||||
|
@ -407,6 +407,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"SentryLogger": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "SentryLogger",
|
||||||
|
"package_type": "plugin",
|
||||||
|
"display_name": "Sentry Logger",
|
||||||
|
"description": "Logs certain events so that they can be used by the crash reporter",
|
||||||
|
"package_version": "1.0.0",
|
||||||
|
"sdk_version": "7.0.0",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "Ultimaker B.V.",
|
||||||
|
"email": "plugins@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"SimulationView": {
|
"SimulationView": {
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "SimulationView",
|
"package_id": "SimulationView",
|
||||||
|
@ -58,9 +58,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 5
|
"default_value": 5
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"machine_heat_zone_length": {
|
"machine_heat_zone_length": {
|
||||||
"default_value": 20
|
"default_value": 20
|
||||||
},
|
},
|
||||||
|
152
resources/definitions/anet3d.def.json
Normal file
152
resources/definitions/anet3d.def.json
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "anet3d",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"author": "Tiger.He",
|
||||||
|
"manufacturer": "Anet",
|
||||||
|
"category": "anet3d",
|
||||||
|
"visible": false,
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"first_start_actions": ["MachineSettingsAction"],
|
||||||
|
|
||||||
|
"preferred_variant_name": "0.4mm Nozzle",
|
||||||
|
"preferred_quality_type": "standard",
|
||||||
|
"preferred_material": "generic_pla",
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"machine_max_feedrate_x": { "value": 500 },
|
||||||
|
"machine_max_feedrate_y": { "value": 500 },
|
||||||
|
"machine_max_feedrate_z": { "value": 10 },
|
||||||
|
"machine_max_feedrate_e": { "value": 50 },
|
||||||
|
|
||||||
|
"machine_max_acceleration_x": { "value": 500 },
|
||||||
|
"machine_max_acceleration_y": { "value": 500 },
|
||||||
|
"machine_max_acceleration_z": { "value": 100 },
|
||||||
|
"machine_max_acceleration_e": { "value": 5000 },
|
||||||
|
"machine_acceleration": { "value": 500 },
|
||||||
|
|
||||||
|
"machine_max_jerk_xy": { "value": 10 },
|
||||||
|
"machine_max_jerk_z": { "value": 0.4 },
|
||||||
|
"machine_max_jerk_e": { "value": 5 },
|
||||||
|
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
|
||||||
|
"acceleration_print": { "value": 1000 },
|
||||||
|
"acceleration_travel": { "value": 1000 },
|
||||||
|
"acceleration_travel_layer_0": { "value": "acceleration_travel" },
|
||||||
|
"acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" },
|
||||||
|
|
||||||
|
"jerk_print": { "value": 30.0 },
|
||||||
|
"jerk_travel": { "value": "jerk_print" },
|
||||||
|
"jerk_travel_layer_0": { "value": "jerk_travel" },
|
||||||
|
|
||||||
|
"acceleration_enabled": { "value": true },
|
||||||
|
"jerk_enabled": { "value": false },
|
||||||
|
|
||||||
|
"speed_print": { "value": 50.0 } ,
|
||||||
|
"speed_infill": { "value": "speed_print * 2" },
|
||||||
|
"speed_wall": { "value": "speed_print / 2" },
|
||||||
|
"speed_wall_0": { "value": "speed_wall" },
|
||||||
|
"speed_wall_x": { "value": "speed_wall" },
|
||||||
|
"speed_topbottom": { "value": "speed_print / 2" },
|
||||||
|
"speed_roofing": { "value": "speed_topbottom" },
|
||||||
|
"speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
|
||||||
|
"speed_layer_0": { "value": "speed_print / 2" },
|
||||||
|
"speed_print_layer_0": { "value": "speed_layer_0" },
|
||||||
|
"speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
|
||||||
|
"speed_prime_tower": { "value": "speed_print" },
|
||||||
|
"speed_support": { "value": "speed_print" },
|
||||||
|
"speed_support_interface": { "value": "speed_print" },
|
||||||
|
"speed_z_hop": { "value": 5 },
|
||||||
|
|
||||||
|
"skirt_brim_speed": { "value": "speed_layer_0" },
|
||||||
|
|
||||||
|
"line_width": { "value": "machine_nozzle_size" },
|
||||||
|
|
||||||
|
"optimize_wall_printing_order": { "value": true },
|
||||||
|
|
||||||
|
"material_initial_print_temperature": { "value": "material_print_temperature" },
|
||||||
|
"material_final_print_temperature": { "value": "material_print_temperature" },
|
||||||
|
"material_flow": { "value": 100 },
|
||||||
|
"travel_compensate_overlapping_walls_0_enabled": { "value": "False" },
|
||||||
|
|
||||||
|
"z_seam_type": { "value": "'back'" },
|
||||||
|
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
|
||||||
|
|
||||||
|
"infill_sparse_density": { "value": "20" },
|
||||||
|
"infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" },
|
||||||
|
"infill_before_walls": { "value": true },
|
||||||
|
"infill_overlap": { "value": 30.0 },
|
||||||
|
"skin_overlap": { "value": 10.0 },
|
||||||
|
"infill_wipe_dist": { "value": 1.0 },
|
||||||
|
"wall_0_wipe_dist": { "value": 0.2 },
|
||||||
|
|
||||||
|
"fill_perimeter_gaps": { "value": "'everywhere'" },
|
||||||
|
"fill_outline_gaps": { "value": false },
|
||||||
|
"filter_out_tiny_gaps": { "value": true },
|
||||||
|
|
||||||
|
"retraction_speed": {
|
||||||
|
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
|
||||||
|
"maximum_value": 200
|
||||||
|
},
|
||||||
|
"retraction_retract_speed": {
|
||||||
|
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
|
||||||
|
"maximum_value": 200
|
||||||
|
},
|
||||||
|
"retraction_prime_speed": {
|
||||||
|
"maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')",
|
||||||
|
"maximum_value": 200
|
||||||
|
},
|
||||||
|
|
||||||
|
"retraction_hop_enabled": { "value": "False" },
|
||||||
|
"retraction_hop": { "value": 1 },
|
||||||
|
"retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" },
|
||||||
|
"retraction_combing_max_distance": { "value": 30 },
|
||||||
|
"travel_avoid_other_parts": { "value": true },
|
||||||
|
"travel_avoid_supports": { "value": true },
|
||||||
|
"travel_retract_before_outer_wall": { "value": true },
|
||||||
|
|
||||||
|
"retraction_enable": { "value": true },
|
||||||
|
"retraction_count_max": { "value": 100 },
|
||||||
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
|
"retraction_min_travel": { "value": 1.5 },
|
||||||
|
|
||||||
|
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
|
||||||
|
"cool_fan_enabled": { "value": true },
|
||||||
|
"cool_min_layer_time": { "value": 10 },
|
||||||
|
|
||||||
|
"adaptive_layer_height_variation": { "value": 0.04 },
|
||||||
|
"adaptive_layer_height_variation_step": { "value": 0.04 },
|
||||||
|
|
||||||
|
"meshfix_maximum_resolution": { "value": "0.05" },
|
||||||
|
"meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" },
|
||||||
|
|
||||||
|
"top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
|
||||||
|
"wall_thickness": {"value": "line_width * 2" },
|
||||||
|
|
||||||
|
"material_print_temperature": {"minimum_value": "0"},
|
||||||
|
"material_bed_temperature": {"minimum_value": "0"},
|
||||||
|
"material_standby_temperature": {"minimum_value": "0"},
|
||||||
|
|
||||||
|
"extruder_prime_pos_y":{"minimum_value": "0","maximum_value": "machine_depth"},
|
||||||
|
"extruder_prime_pos_x":{"minimum_value": "0","maximum_value": "machine_width"},
|
||||||
|
"relative_extrusion":{"value": false,"enabled": false},
|
||||||
|
|
||||||
|
"machine_use_extruder_offset_to_offset_coords": {"default_value": true},
|
||||||
|
"machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"},
|
||||||
|
|
||||||
|
"machine_center_is_zero": {
|
||||||
|
"default_value": false
|
||||||
|
},
|
||||||
|
"gantry_height": {
|
||||||
|
"value": "0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_a2 plus.def.json
Normal file
31
resources/definitions/anet3d_a2 plus.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet A2 PLUS",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet A2 PLUS" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 270
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_a2.def.json
Normal file
31
resources/definitions/anet3d_a2.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet A2",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet A2" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_a6.def.json
Normal file
31
resources/definitions/anet3d_a6.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet A6",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet A6" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 250
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_a8 plus.def.json
Normal file
31
resources/definitions/anet3d_a8 plus.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet A8 PLUS",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet A8 PLUS" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 350
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_a8.def.json
Normal file
31
resources/definitions/anet3d_a8.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet A8",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet A8" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 240
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_e10.def.json
Normal file
31
resources/definitions/anet3d_e10.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet E10",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet E10" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 270
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_e12.def.json
Normal file
31
resources/definitions/anet3d_e12.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet E12",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet E12" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 400
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_e16.def.json
Normal file
31
resources/definitions/anet3d_e16.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet E16",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet E16" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 400
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_et4 pro.def.json
Normal file
31
resources/definitions/anet3d_et4 pro.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet ET4 PRO",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet ET4 PRO" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 250
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_et4 x.def.json
Normal file
31
resources/definitions/anet3d_et4 x.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet ET4 X",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet ET4 X" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 250
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_et4.def.json
Normal file
31
resources/definitions/anet3d_et4.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet ET4",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet ET4" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 250
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_et5 x.def.json
Normal file
31
resources/definitions/anet3d_et5 x.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet ET5 X",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet ET5 X" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 400
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
resources/definitions/anet3d_et5.def.json
Normal file
31
resources/definitions/anet3d_et5.def.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Anet ET5",
|
||||||
|
"inherits": "anet3d",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "anet3d_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Anet ET5" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 400
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E80\nG1 E-80 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"name": "Anet A6",
|
|
||||||
"inherits": "fdmprinter",
|
|
||||||
"metadata": {
|
|
||||||
"visible": true,
|
|
||||||
"author": "Mark",
|
|
||||||
"manufacturer": "Anet",
|
|
||||||
"file_formats": "text/x-gcode",
|
|
||||||
"platform": "aneta6_platform.stl",
|
|
||||||
"platform_offset": [0, -3.4, 0],
|
|
||||||
"machine_extruder_trains":
|
|
||||||
{
|
|
||||||
"0": "anet_a6_extruder_0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"overrides": {
|
|
||||||
"machine_name": { "default_value": "Anet A6" },
|
|
||||||
"machine_heated_bed": {
|
|
||||||
"default_value": true
|
|
||||||
},
|
|
||||||
"machine_width": {
|
|
||||||
"default_value": 220
|
|
||||||
},
|
|
||||||
"machine_height": {
|
|
||||||
"default_value": 250
|
|
||||||
},
|
|
||||||
"machine_depth": {
|
|
||||||
"default_value": 220
|
|
||||||
},
|
|
||||||
"machine_center_is_zero": {
|
|
||||||
"default_value": false
|
|
||||||
},
|
|
||||||
"gantry_height": {
|
|
||||||
"value": "55"
|
|
||||||
},
|
|
||||||
"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\nM84 ;steppers off\nM0 S12 ;wait 12 seconds\nM17 ;turn steppers on\nG1 Z10.0 F300 ;move the platform down 10mm\nG92 E0 ;zero the extruded length\nG1 F200 E8 ;extrude 8mm of feed stock\nG92 E0 ;zero the extruded length again\nM0 S5 ;wait 5 seconds\nG1 F9000\nM117 Printing..."
|
|
||||||
},
|
|
||||||
"machine_end_gcode": {
|
|
||||||
"default_value": "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+4 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\nG1 Y210 F9000 ;move out to get part off\nM84 ;steppers off\nG90 ;absolute positioning"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -2084,7 +2084,6 @@
|
|||||||
"maximum_value": "machine_height",
|
"maximum_value": "machine_height",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"value": "0",
|
"value": "0",
|
||||||
"comment": "This was put at 0 to keep the default behaviour the same, but in the original PR the 'value' was: resolveOrValue('infill_sparse_thickness') * (4 if infill_sparse_density < 12.5 else (3 if infill_sparse_density < 25 else (2 if infill_sparse_density < 50 else 1)))",
|
|
||||||
"limit_to_extruder": "infill_extruder_nr",
|
"limit_to_extruder": "infill_extruder_nr",
|
||||||
"enabled": "infill_sparse_density > 0",
|
"enabled": "infill_sparse_density > 0",
|
||||||
"settable_per_mesh": true,
|
"settable_per_mesh": true,
|
||||||
@ -2420,6 +2419,54 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
},
|
},
|
||||||
|
"material_flush_purge_speed":
|
||||||
|
{
|
||||||
|
"label": "Flush Purge Speed",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 0.5,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"material_flush_purge_length":
|
||||||
|
{
|
||||||
|
"label": "Flush Purge Length",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 60,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"material_end_of_filament_purge_speed":
|
||||||
|
{
|
||||||
|
"label": "End Of Filament Purge Speed",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 0.5,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"material_end_of_filament_purge_length":
|
||||||
|
{
|
||||||
|
"label": "End Of Filament Purge Length",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 20,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"material_maximum_park_duration":
|
||||||
|
{
|
||||||
|
"label": "Maximum Park Duration",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 300,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"material_no_load_move_factor":
|
||||||
|
{
|
||||||
|
"label": "No Load Move Factor",
|
||||||
|
"description": "Material Station internal value",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 0.940860215,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
"material_flow":
|
"material_flow":
|
||||||
{
|
{
|
||||||
"label": "Flow",
|
"label": "Flow",
|
||||||
@ -4233,8 +4280,8 @@
|
|||||||
"minimum_value_warning": "1 if support_pattern == 'concentric' else 0",
|
"minimum_value_warning": "1 if support_pattern == 'concentric' else 0",
|
||||||
"maximum_value_warning": "3",
|
"maximum_value_warning": "3",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"value": "1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0",
|
"value": "1 if support_tree_enable else (1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0)",
|
||||||
"enabled": "support_enable",
|
"enabled": "support_enable or support_tree_enable",
|
||||||
"limit_to_extruder": "support_infill_extruder_nr",
|
"limit_to_extruder": "support_infill_extruder_nr",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
@ -6186,38 +6233,6 @@
|
|||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": true
|
"settable_per_extruder": true
|
||||||
},
|
},
|
||||||
"support_tree_wall_thickness":
|
|
||||||
{
|
|
||||||
"label": "Tree Support Wall Thickness",
|
|
||||||
"description": "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.",
|
|
||||||
"unit": "mm",
|
|
||||||
"type": "float",
|
|
||||||
"minimum_value": "0",
|
|
||||||
"minimum_value_warning": "wall_line_width",
|
|
||||||
"default_value": 0.8,
|
|
||||||
"value": "support_line_width",
|
|
||||||
"limit_to_extruder": "support_infill_extruder_nr",
|
|
||||||
"enabled": "support_tree_enable",
|
|
||||||
"settable_per_mesh": false,
|
|
||||||
"settable_per_extruder": true,
|
|
||||||
"children":
|
|
||||||
{
|
|
||||||
"support_tree_wall_count":
|
|
||||||
{
|
|
||||||
"label": "Tree Support Wall Line Count",
|
|
||||||
"description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.",
|
|
||||||
"type": "int",
|
|
||||||
"minimum_value": "0",
|
|
||||||
"minimum_value_warning": "1",
|
|
||||||
"default_value": 1,
|
|
||||||
"value": "round(support_tree_wall_thickness / support_line_width)",
|
|
||||||
"limit_to_extruder": "support_infill_extruder_nr",
|
|
||||||
"enabled": "support_tree_enable",
|
|
||||||
"settable_per_mesh": false,
|
|
||||||
"settable_per_extruder": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"slicing_tolerance":
|
"slicing_tolerance":
|
||||||
{
|
{
|
||||||
"label": "Slicing Tolerance",
|
"label": "Slicing Tolerance",
|
||||||
|
64
resources/definitions/lotmaxx_sc10.def.json
Normal file
64
resources/definitions/lotmaxx_sc10.def.json
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"name": "Lotmaxx SC-10",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"author": "lotmaxx.com",
|
||||||
|
"manufacturer": "Lotmaxx",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform": "lotmaxx_sc_10_20_platform.stl",
|
||||||
|
"has_materials": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "lotmaxx_sc10_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Lotmaxx SC-10" },
|
||||||
|
"machine_width": { "default_value": 235 },
|
||||||
|
"machine_depth": { "default_value": 235 },
|
||||||
|
"machine_height": { "default_value": 320 },
|
||||||
|
"machine_head_with_fans_polygon": { "default_value": [[-32,11],[-32,-32],[28,-32],[28,11]] },
|
||||||
|
"gantry_height": { "value": 40 },
|
||||||
|
"machine_start_gcode": { "default_value": "; SC-10 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" },
|
||||||
|
"machine_end_gcode": { "default_value": "; SC-10 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
|
||||||
|
"machine_max_jerk_xy":{ "value":10 },
|
||||||
|
"machine_max_jerk_z":{ "value":0.4 },
|
||||||
|
"machine_max_jerk_e":{ "value":5 },
|
||||||
|
"machine_heated_bed":{ "default_value":true },
|
||||||
|
"material_diameter":{ "default_value":1.75 },
|
||||||
|
"jerk_print":{ "value":8 },
|
||||||
|
"jerk_travel":{ "value":"jerk_print" },
|
||||||
|
"jerk_travel_layer_0":{ "value":"jerk_travel" },
|
||||||
|
"acceleration_enabled":{ "value":false },
|
||||||
|
"jerk_enabled":{ "value":false },
|
||||||
|
"speed_print":{ "value":60.0 },
|
||||||
|
"speed_infill":{ "value":"speed_print * 2" },
|
||||||
|
"speed_wall":{ "value":"speed_print / 2" },
|
||||||
|
"speed_wall_0":{ "value":"speed_wall" },
|
||||||
|
"speed_wall_x":{ "value":"speed_wall" },
|
||||||
|
"speed_topbottom":{ "value":"speed_print / 2" },
|
||||||
|
"speed_roofing":{ "value":"speed_topbottom" },
|
||||||
|
"speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
|
||||||
|
"speed_layer_0":{ "value":20.0 },
|
||||||
|
"speed_print_layer_0":{ "value":"speed_layer_0" },
|
||||||
|
"speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
|
||||||
|
"speed_prime_tower":{ "value":"speed_topbottom" },
|
||||||
|
"speed_support":{ "value":"speed_wall_0" },
|
||||||
|
"speed_support_interface":{ "value":"speed_topbottom" },
|
||||||
|
"skirt_brim_speed":{ "value":"speed_layer_0" },
|
||||||
|
"retraction_enable":{ "value":true },
|
||||||
|
"retraction_count_max":{ "value":100 },
|
||||||
|
"retraction_extrusion_window":{ "value":10 },
|
||||||
|
"retraction_min_travel":{ "value":1.5 },
|
||||||
|
"cool_fan_full_at_height":{ "value":"layer_height_0 + 2 * layer_height" },
|
||||||
|
"cool_fan_enabled":{ "value":true },
|
||||||
|
"cool_min_layer_time":{ "value":10 },
|
||||||
|
"meshfix_maximum_resolution":{ "value":"0.05" },
|
||||||
|
"meshfix_maximum_travel_resolution":{ "value":"meshfix_maximum_resolution" },
|
||||||
|
"adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
|
||||||
|
"skirt_gap":{ "value":5.0 },
|
||||||
|
"skirt_line_count":{ "value":4 }
|
||||||
|
}
|
||||||
|
}
|
64
resources/definitions/lotmaxx_sc20.def.json
Normal file
64
resources/definitions/lotmaxx_sc20.def.json
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"name": "Lotmaxx SC-20",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"author": "lotmaxx.com",
|
||||||
|
"manufacturer": "Lotmaxx",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform": "lotmaxx_sc_10_20_platform.stl",
|
||||||
|
"has_materials": true,
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "lotmaxx_sc20_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Lotmaxx SC-20" },
|
||||||
|
"machine_width": { "default_value": 235 },
|
||||||
|
"machine_depth": { "default_value": 235 },
|
||||||
|
"machine_height": { "default_value": 320 },
|
||||||
|
"machine_head_with_fans_polygon": { "default_value": [[-32,11],[-32,-32],[28,-32],[28,11]] },
|
||||||
|
"gantry_height": { "value": 40 },
|
||||||
|
"machine_start_gcode": { "default_value": "; SC-20 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" },
|
||||||
|
"machine_end_gcode": { "default_value": "; SC-20 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" },
|
||||||
|
"machine_max_jerk_xy":{ "value":10 },
|
||||||
|
"machine_max_jerk_z":{ "value":0.4 },
|
||||||
|
"machine_max_jerk_e":{ "value":5 },
|
||||||
|
"machine_heated_bed":{ "default_value":true },
|
||||||
|
"material_diameter":{ "default_value":1.75 },
|
||||||
|
"jerk_print":{ "value":8 },
|
||||||
|
"jerk_travel":{ "value":"jerk_print" },
|
||||||
|
"jerk_travel_layer_0":{ "value":"jerk_travel" },
|
||||||
|
"acceleration_enabled":{ "value":false },
|
||||||
|
"jerk_enabled":{ "value":false },
|
||||||
|
"speed_print":{ "value":60.0 },
|
||||||
|
"speed_infill":{ "value":"speed_print * 2" },
|
||||||
|
"speed_wall":{ "value":"speed_print / 2" },
|
||||||
|
"speed_wall_0":{ "value":"speed_wall" },
|
||||||
|
"speed_wall_x":{ "value":"speed_wall" },
|
||||||
|
"speed_topbottom":{ "value":"speed_print / 2" },
|
||||||
|
"speed_roofing":{ "value":"speed_topbottom" },
|
||||||
|
"speed_travel":{ "value":"150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" },
|
||||||
|
"speed_layer_0":{ "value":20.0 },
|
||||||
|
"speed_print_layer_0":{ "value":"speed_layer_0" },
|
||||||
|
"speed_travel_layer_0":{ "value":"100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" },
|
||||||
|
"speed_prime_tower":{ "value":"speed_topbottom" },
|
||||||
|
"speed_support":{ "value":"speed_wall_0" },
|
||||||
|
"speed_support_interface":{ "value":"speed_topbottom" },
|
||||||
|
"skirt_brim_speed":{ "value":"speed_layer_0" },
|
||||||
|
"retraction_enable":{ "value":true },
|
||||||
|
"retraction_count_max":{ "value":100 },
|
||||||
|
"retraction_extrusion_window":{ "value":10 },
|
||||||
|
"retraction_min_travel":{ "value":1.5 },
|
||||||
|
"cool_fan_full_at_height":{ "value":"layer_height_0 + 2 * layer_height" },
|
||||||
|
"cool_fan_enabled":{ "value":true },
|
||||||
|
"cool_min_layer_time":{ "value":10 },
|
||||||
|
"meshfix_maximum_resolution":{ "value":"0.05" },
|
||||||
|
"meshfix_maximum_travel_resolution":{ "value":"meshfix_maximum_resolution" },
|
||||||
|
"adhesion_type": { "value": "'none' if support_enable else 'skirt'" },
|
||||||
|
"skirt_gap":{ "value":5.0 },
|
||||||
|
"skirt_line_count":{ "value":4 }
|
||||||
|
}
|
||||||
|
}
|
@ -47,9 +47,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 3
|
"default_value": 3
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"layer_height_0": {
|
"layer_height_0": {
|
||||||
"default_value": 0.2
|
"default_value": 0.2
|
||||||
},
|
},
|
||||||
|
@ -58,9 +58,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 5
|
"default_value": 5
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"machine_heat_zone_length": {
|
"machine_heat_zone_length": {
|
||||||
"default_value": 16
|
"default_value": 16
|
||||||
},
|
},
|
||||||
|
@ -195,9 +195,6 @@
|
|||||||
"support_xy_distance_overhang": {
|
"support_xy_distance_overhang": {
|
||||||
"value": "0.5"
|
"value": "0.5"
|
||||||
},
|
},
|
||||||
"support_tree_wall_thickness": {
|
|
||||||
"value": "0.4"
|
|
||||||
},
|
|
||||||
"acceleration_print_layer_0": {
|
"acceleration_print_layer_0": {
|
||||||
"value": "250"
|
"value": "250"
|
||||||
},
|
},
|
||||||
|
@ -76,9 +76,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 5
|
"default_value": 5
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"machine_heat_zone_length": {
|
"machine_heat_zone_length": {
|
||||||
"default_value": 20
|
"default_value": 20
|
||||||
},
|
},
|
||||||
|
@ -47,7 +47,6 @@
|
|||||||
|
|
||||||
"machine_nozzle_tip_outer_diameter": { "default_value": 1 },
|
"machine_nozzle_tip_outer_diameter": { "default_value": 1 },
|
||||||
"machine_nozzle_head_distance": { "default_value": 3 },
|
"machine_nozzle_head_distance": { "default_value": 3 },
|
||||||
"machine_nozzle_expansion_angle": { "default_value": 45 },
|
|
||||||
|
|
||||||
"machine_max_acceleration_x": { "default_value": 6000 },
|
"machine_max_acceleration_x": { "default_value": 6000 },
|
||||||
"machine_max_acceleration_y": { "default_value": 6000 },
|
"machine_max_acceleration_y": { "default_value": 6000 },
|
||||||
|
@ -74,9 +74,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 3
|
"default_value": 3
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"machine_max_feedrate_x": {
|
"machine_max_feedrate_x": {
|
||||||
"default_value": 300
|
"default_value": 300
|
||||||
},
|
},
|
||||||
|
@ -52,9 +52,6 @@
|
|||||||
"machine_nozzle_head_distance": {
|
"machine_nozzle_head_distance": {
|
||||||
"default_value": 5
|
"default_value": 5
|
||||||
},
|
},
|
||||||
"machine_nozzle_expansion_angle": {
|
|
||||||
"default_value": 45
|
|
||||||
},
|
|
||||||
"machine_heat_zone_length": {
|
"machine_heat_zone_length": {
|
||||||
"default_value": 20
|
"default_value": 20
|
||||||
},
|
},
|
||||||
|
18
resources/definitions/voron2_250.def.json
Normal file
18
resources/definitions/voron2_250.def.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "VORON2 250",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "voron2_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"platform": "voron2_250_bed.stl",
|
||||||
|
"quality_definition": "voron2_base"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_name": { "default_value": "VORON2 250" },
|
||||||
|
"machine_width": { "default_value": 250 },
|
||||||
|
"machine_depth": { "default_value": 250 },
|
||||||
|
"machine_height": { "default_value": 250 }
|
||||||
|
}
|
||||||
|
}
|
18
resources/definitions/voron2_300.def.json
Normal file
18
resources/definitions/voron2_300.def.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "VORON2 300",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "voron2_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"platform": "voron2_300_bed.stl",
|
||||||
|
"quality_definition": "voron2_base"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_name": { "default_value": "VORON2 300" },
|
||||||
|
"machine_width": { "default_value": 300 },
|
||||||
|
"machine_depth": { "default_value": 300 },
|
||||||
|
"machine_height": { "default_value": 300 }
|
||||||
|
}
|
||||||
|
}
|
18
resources/definitions/voron2_350.def.json
Normal file
18
resources/definitions/voron2_350.def.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "VORON2 350",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "voron2_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"platform": "voron2_350_bed.stl",
|
||||||
|
"quality_definition": "voron2_base"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_name": { "default_value": "VORON2 350" },
|
||||||
|
"machine_width": { "default_value": 350 },
|
||||||
|
"machine_depth": { "default_value": 350 },
|
||||||
|
"machine_height": { "default_value": 350 }
|
||||||
|
}
|
||||||
|
}
|
155
resources/definitions/voron2_base.def.json
Normal file
155
resources/definitions/voron2_base.def.json
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
{
|
||||||
|
"name": "VORON2 Base",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": false,
|
||||||
|
"author": "Fulg, Maglin, pizzle_Dizzle",
|
||||||
|
"manufacturer": "VORONDesign",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"first_start_actions": ["MachineSettingsAction"],
|
||||||
|
"preferred_quality_type": "fast",
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"variants_name": "Toolhead",
|
||||||
|
"preferred_variant_name": "V6 0.40mm",
|
||||||
|
"machine_extruder_trains": { "0": "voron2_extruder_0" },
|
||||||
|
"preferred_material": "generic_abs",
|
||||||
|
"exclude_materials": [
|
||||||
|
"ultimaker_abs_black",
|
||||||
|
"ultimaker_abs_blue",
|
||||||
|
"ultimaker_abs_green",
|
||||||
|
"ultimaker_abs_grey",
|
||||||
|
"ultimaker_abs_orange",
|
||||||
|
"ultimaker_abs_pearl-gold",
|
||||||
|
"ultimaker_abs_red",
|
||||||
|
"ultimaker_abs_silver-metallic",
|
||||||
|
"ultimaker_abs_white",
|
||||||
|
"ultimaker_abs_yellow",
|
||||||
|
"ultimaker_bam",
|
||||||
|
"ultimaker_cpe_black",
|
||||||
|
"ultimaker_cpe_blue",
|
||||||
|
"ultimaker_cpe_dark-grey",
|
||||||
|
"ultimaker_cpe_green",
|
||||||
|
"ultimaker_cpe_light-grey",
|
||||||
|
"ultimaker_cpe_plus_black",
|
||||||
|
"ultimaker_cpe_plus_transparent",
|
||||||
|
"ultimaker_cpe_plus_white",
|
||||||
|
"ultimaker_cpe_red",
|
||||||
|
"ultimaker_cpe_transparent",
|
||||||
|
"ultimaker_cpe_white",
|
||||||
|
"ultimaker_cpe_yellow",
|
||||||
|
"ultimaker_nylon_black",
|
||||||
|
"ultimaker_nylon_transparent",
|
||||||
|
"ultimaker_pc_black",
|
||||||
|
"ultimaker_pc_transparent",
|
||||||
|
"ultimaker_pc_white",
|
||||||
|
"ultimaker_pla_black",
|
||||||
|
"ultimaker_pla_blue",
|
||||||
|
"ultimaker_pla_green",
|
||||||
|
"ultimaker_pla_magenta",
|
||||||
|
"ultimaker_pla_orange",
|
||||||
|
"ultimaker_pla_pearl-white",
|
||||||
|
"ultimaker_pla_red",
|
||||||
|
"ultimaker_pla_silver-metallic",
|
||||||
|
"ultimaker_pla_transparent",
|
||||||
|
"ultimaker_pla_white",
|
||||||
|
"ultimaker_pla_yellow",
|
||||||
|
"ultimaker_pp_transparent",
|
||||||
|
"ultimaker_pva",
|
||||||
|
"ultimaker_tough_pla_black",
|
||||||
|
"ultimaker_tough_pla_green",
|
||||||
|
"ultimaker_tough_pla_red",
|
||||||
|
"ultimaker_tough_pla_white",
|
||||||
|
"ultimaker_tpu_black",
|
||||||
|
"ultimaker_tpu_blue",
|
||||||
|
"ultimaker_tpu_red",
|
||||||
|
"ultimaker_tpu_white"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_name": { "default_value": "VORON2" },
|
||||||
|
"machine_width": { "default_value": 250 },
|
||||||
|
"machine_depth": { "default_value": 250 },
|
||||||
|
"machine_height": { "default_value": 250 },
|
||||||
|
"gantry_height": { "value": 30 },
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_max_acceleration_x": { "default_value": 1500 },
|
||||||
|
"machine_max_acceleration_y": { "default_value": 1500 },
|
||||||
|
"machine_max_acceleration_z": { "default_value": 250 },
|
||||||
|
"machine_acceleration": { "default_value": 1500 },
|
||||||
|
"machine_max_jerk_xy": { "default_value": 20 },
|
||||||
|
"machine_max_jerk_z": { "default_value": 1 },
|
||||||
|
"machine_max_jerk_e": { "default_value": 60 },
|
||||||
|
"machine_steps_per_mm_x": { "default_value": 80 },
|
||||||
|
"machine_steps_per_mm_y": { "default_value": 80 },
|
||||||
|
"machine_steps_per_mm_z": { "default_value": 400 },
|
||||||
|
"machine_endstop_positive_direction_x": { "default_value": true },
|
||||||
|
"machine_endstop_positive_direction_y": { "default_value": true },
|
||||||
|
"machine_endstop_positive_direction_z": { "default_value": false },
|
||||||
|
"machine_feeder_wheel_diameter": { "default_value": 7.5 },
|
||||||
|
"machine_head_with_fans_polygon": { "default_value": [ [-35, 65], [-35, -50], [35, -50], [35, 65] ] },
|
||||||
|
"machine_max_feedrate_z": { "default_value": 40 },
|
||||||
|
"machine_max_feedrate_e": { "default_value": 120 },
|
||||||
|
"machine_gcode_flavor": { "default_value": "RepRap (RepRap)" },
|
||||||
|
"machine_start_gcode": { "default_value": "print_start" },
|
||||||
|
"machine_end_gcode": { "default_value": "print_end" },
|
||||||
|
"adhesion_type": { "default_value": "skirt" },
|
||||||
|
"skirt_brim_minimal_length": { "default_value": 550 },
|
||||||
|
"retraction_speed": { "default_value": 80, "maximum_value_warning": 130 },
|
||||||
|
"retraction_retract_speed": { "maximum_value_warning": 130 },
|
||||||
|
"retraction_prime_speed": { "value": "math.ceil(retraction_speed * 0.4)", "maximum_value_warning": 130 },
|
||||||
|
"retraction_hop_enabled": { "default_value": true },
|
||||||
|
"retraction_hop": { "default_value": 0.2 },
|
||||||
|
"retraction_combing": { "default_value": "noskin" },
|
||||||
|
"retraction_combing_max_distance": { "default_value": 10 },
|
||||||
|
"travel_avoid_other_parts": { "default_value": false },
|
||||||
|
"speed_travel": { "maximum_value": 300, "value": 300, "maximum_value_warning": 501 },
|
||||||
|
"speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)" },
|
||||||
|
"speed_layer_0": { "value": "math.ceil(speed_print * 0.25)" },
|
||||||
|
"speed_wall": { "value": "math.ceil(speed_print * 0.33)" },
|
||||||
|
"speed_wall_0": { "value": "math.ceil(speed_print * 0.33)" },
|
||||||
|
"speed_wall_x": { "value": "math.ceil(speed_print * 0.66)" },
|
||||||
|
"speed_topbottom": { "value": "math.ceil(speed_print * 0.33)" },
|
||||||
|
"speed_roofing": { "value": "math.ceil(speed_print * 0.33)" },
|
||||||
|
"speed_slowdown_layers": { "default_value": 4 },
|
||||||
|
"roofing_layer_count": { "value": 1 },
|
||||||
|
"optimize_wall_printing_order": { "default_value": true },
|
||||||
|
"infill_enable_travel_optimization": { "default_value": true },
|
||||||
|
"minimum_polygon_circumference": { "default_value": 0.2 },
|
||||||
|
"wall_overhang_angle": { "default_value": 75 },
|
||||||
|
"wall_overhang_speed_factor": { "default_value": 50 },
|
||||||
|
"bridge_settings_enabled": { "default_value": true },
|
||||||
|
"bridge_wall_coast": { "default_value": 10 },
|
||||||
|
"bridge_fan_speed": { "default_value": 100 },
|
||||||
|
"bridge_fan_speed_2": { "resolve": "max(cool_fan_speed, 50)" },
|
||||||
|
"bridge_fan_speed_3": { "resolve": "max(cool_fan_speed, 20)" },
|
||||||
|
"alternate_extra_perimeter": { "default_value": true },
|
||||||
|
"cool_min_layer_time_fan_speed_max": { "default_value": 20 },
|
||||||
|
"cool_min_layer_time": { "default_value": 15 },
|
||||||
|
"cool_fan_speed_min": { "value": "cool_fan_speed" },
|
||||||
|
"cool_fan_full_at_height": { "value": "resolveOrValue('layer_height_0') + resolveOrValue('layer_height') * max(1, cool_fan_full_layer - 1)" },
|
||||||
|
"cool_fan_full_layer": { "value": 4 },
|
||||||
|
"layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
|
||||||
|
"line_width": { "value": "machine_nozzle_size * 1.125" },
|
||||||
|
"wall_line_width": { "value": "machine_nozzle_size" },
|
||||||
|
"fill_perimeter_gaps": { "default_value": "nowhere" },
|
||||||
|
"fill_outline_gaps": { "default_value": true },
|
||||||
|
"meshfix_maximum_resolution": { "default_value": 0.01 },
|
||||||
|
"infill_before_walls": { "default_value": false },
|
||||||
|
"zig_zaggify_infill": { "value": true },
|
||||||
|
"min_infill_area": { "default_value": 5.0 },
|
||||||
|
"acceleration_enabled": { "default_value": false },
|
||||||
|
"acceleration_print": { "default_value": 2200 },
|
||||||
|
"acceleration_wall_0": { "value": 1800 },
|
||||||
|
"acceleration_layer_0": { "value": 1800 },
|
||||||
|
"acceleration_travel_layer_0": { "value": 1800 },
|
||||||
|
"acceleration_roofing": { "value": 1800 },
|
||||||
|
"jerk_enabled": { "default_value": false },
|
||||||
|
"jerk_wall_0": { "value": 10 },
|
||||||
|
"jerk_roofing": { "value": 10 }
|
||||||
|
}
|
||||||
|
}
|
14
resources/definitions/voron2_custom.def.json
Normal file
14
resources/definitions/voron2_custom.def.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "VORON2 Custom",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "voron2_base",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"quality_definition": "voron2_base"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_name": { "default_value": "VORON2 Custom" }
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
"name": "Extruder 1",
|
"name": "Extruder 1",
|
||||||
"inherits": "fdmextruder",
|
"inherits": "fdmextruder",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"machine": "anet_a6",
|
"machine": "anet3d",
|
||||||
"position": "0"
|
"position": "0"
|
||||||
},
|
},
|
||||||
|
|
15
resources/extruders/lotmaxx_sc10_extruder_0.def.json
Normal file
15
resources/extruders/lotmaxx_sc10_extruder_0.def.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "lotmaxx_sc10",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
15
resources/extruders/lotmaxx_sc20_extruder_0.def.json
Normal file
15
resources/extruders/lotmaxx_sc20_extruder_0.def.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "lotmaxx_sc20",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
16
resources/extruders/voron2_extruder_0.def.json
Normal file
16
resources/extruders/voron2_extruder_0.def.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Toolhead",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "voron2_base",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr": { "default_value": 0, "maximum_value": 1 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
BIN
resources/meshes/lotmaxx_sc_10_20_platform.stl
Normal file
BIN
resources/meshes/lotmaxx_sc_10_20_platform.stl
Normal file
Binary file not shown.
BIN
resources/meshes/voron2_250_bed.stl
Normal file
BIN
resources/meshes/voron2_250_bed.stl
Normal file
Binary file not shown.
BIN
resources/meshes/voron2_300_bed.stl
Normal file
BIN
resources/meshes/voron2_300_bed.stl
Normal file
Binary file not shown.
BIN
resources/meshes/voron2_350_bed.stl
Normal file
BIN
resources/meshes/voron2_350_bed.stl
Normal file
Binary file not shown.
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafast
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.3
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.06
|
||||||
|
|
14
resources/quality/voron2/voron2_global_fast_quality.inst.cfg
Normal file
14
resources/quality/voron2/voron2_global_fast_quality.inst.cfg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.2
|
||||||
|
|
14
resources/quality/voron2/voron2_global_fine_quality.inst.cfg
Normal file
14
resources/quality/voron2/voron2_global_fine_quality.inst.cfg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.1
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.15
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Sprint
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = sprint
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.4
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Super Sprint
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = supersprint
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.5
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Ultra Sprint
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = ultrasprint
|
||||||
|
global_quality = True
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height = 0.6
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
15
resources/quality/voron2/voron2_v6_0.25_ABS_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_ABS_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 180
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_ABS_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_ABS_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_ABS_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_ABS_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 240
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
15
resources/quality/voron2/voron2_v6_0.25_Nylon_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_Nylon_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 180
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_Nylon_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_Nylon_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 240
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
15
resources/quality/voron2/voron2_v6_0.25_PC_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PC_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 180
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PC_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PC_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PC_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PC_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 240
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_petg
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
15
resources/quality/voron2/voron2_v6_0.25_PETG_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PETG_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_petg
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 180
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PETG_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PETG_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_petg
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PETG_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PETG_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_petg
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 240
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_pla
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
15
resources/quality/voron2/voron2_v6_0.25_PLA_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PLA_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_pla
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 180
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PLA_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PLA_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_pla
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.25_PLA_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.25_PLA_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_pla
|
||||||
|
variant = V6 0.25mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 240
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_ABS_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_ABS_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 160
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_ABS_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_ABS_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_ABS_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_ABS_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_abs
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 200
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_Nylon_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_Nylon_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 160
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_Nylon_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_Nylon_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_nylon
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 200
|
||||||
|
|
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Extra Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = extrafine
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_PC_fast.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_PC_fast.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fast
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fast
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 160
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_PC_fine.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_PC_fine.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Fine
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = fine
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 300
|
||||||
|
|
15
resources/quality/voron2/voron2_v6_0.30_PC_normal.inst.cfg
Normal file
15
resources/quality/voron2/voron2_v6_0.30_PC_normal.inst.cfg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = Normal
|
||||||
|
definition = voron2_base
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 11
|
||||||
|
type = quality
|
||||||
|
quality_type = normal
|
||||||
|
material = generic_pc
|
||||||
|
variant = V6 0.30mm
|
||||||
|
|
||||||
|
[values]
|
||||||
|
speed_print = 200
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user