Merge branch 'master' of github.com:Ultimaker/Cura into CURA-7038

This commit is contained in:
Dimitriovski 2019-12-23 17:48:15 +01:00
commit 4b86400661
No known key found for this signature in database
GPG Key ID: 4E62757E2B0D304D
321 changed files with 5664 additions and 887 deletions

View File

@ -1,6 +1,12 @@
---
name: CI/CD
on: [push, pull_request]
on:
push:
branches:
- master
- 'WIP**'
- '4.*'
pull_request:
jobs:
build:
name: Build and test

View File

@ -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.
import platform
@ -7,13 +7,14 @@ import faulthandler
import tempfile
import os
import os.path
import time
import uuid
import json
import ssl
import urllib.request
import urllib.error
import locale
from typing import cast
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.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.i18n import i18nCatalog
from UM.Resources import Resources
from cura import ApplicationMetadata
catalog = i18nCatalog("cura")
@ -46,9 +46,8 @@ skip_exception_types = [
GeneratorExit
]
class CrashHandler:
crash_url = "https://stats.ultimaker.com/api/cura"
class CrashHandler:
def __init__(self, exception_type, value, tb, has_started = True):
self.exception_type = exception_type
self.value = value
@ -56,21 +55,20 @@ class CrashHandler:
self.has_started = has_started
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!")
for line in traceback.format_exception(exception_type, value, tb):
for part in line.rstrip("\n").split("\n"):
Logger.log("c", part)
self.data = {}
# 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
# without any information.
if has_started and exception_type in skip_exception_types:
return
with configure_scope() as scope:
scope.set_tag("during_startup", not has_started)
if not has_started:
self._send_report_checkbox = None
self.early_crash_dialog = self._createEarlyCrashDialog()
@ -179,25 +177,42 @@ class CrashHandler:
try:
from UM.Application import Application
self.cura_version = Application.getInstance().getVersion()
self.cura_locale = Application.getInstance().getPreferences().getValue("general/language")
except:
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 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", "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 OpenGL version", "OpenGL") + ":</b> " + str(self._getOpenGLInfo()) + "<br/>"
label.setText(crash_info)
layout.addWidget(label)
group.setLayout(layout)
self.data["cura_version"] = self.cura_version
self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType
self.data["os"] = {"type": platform.system(), "version": platform.version()}
self.data["qt_version"] = QT_VERSION_STR
self.data["pyqt_version"] = PYQT_VERSION_STR
with configure_scope() as scope:
scope.set_tag("qt_version", QT_VERSION_STR)
scope.set_tag("pyqt_version", PYQT_VERSION_STR)
scope.set_tag("os", platform.system())
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
@ -215,6 +230,30 @@ class CrashHandler:
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
def _exceptionInfoWidget(self):
@ -296,6 +335,10 @@ class CrashHandler:
"module_name": module_name, "version": module_version, "is_plugin": isPlugin}
self.data["exception"] = exception_dict
with configure_scope() as scope:
scope.set_tag("is_plugin", isPlugin)
scope.set_tag("module", module_name)
return group
def _logInfoWidget(self):
@ -353,31 +396,11 @@ class CrashHandler:
# Before sending data, the user comments are stored
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:
f = urllib.request.urlopen(self.crash_url, **kwoptions)
Logger.log("i", "Sent crash report info.")
if not self.has_started:
print("Sent crash report info.\n")
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)
hub = Hub.current
event, hint = event_from_exception((self.exception_type, self.value, self.traceback))
hub.capture_event(event, hint=hint)
hub.flush()
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")
if not self.has_started:

View File

@ -60,28 +60,38 @@ class MaterialNode(ContainerNode):
container_registry = ContainerRegistry.getInstance()
# Find all quality profiles that fit on this material.
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:
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:
if self.variant.machine.has_variants:
# 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:
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:
my_material_type = self.material_type
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:
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):
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.
my_guid = self.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:
# There are still some machines that should use global profiles in the extruder, so do that now.

View File

@ -43,7 +43,7 @@ class CuraFormulaFunctions:
extruder_stack = global_stack.extruderList[int(extruder_position)]
except IndexError:
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
# 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).

View File

@ -894,8 +894,8 @@ class MachineManager(QObject):
@pyqtSlot(int, bool)
def setExtruderEnabled(self, position: int, enabled: bool) -> None:
if self._global_container_stack is None:
Logger.log("w", "Could not find extruder on position %s", position)
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)
return
extruder = self._global_container_stack.extruderList[position]

View File

@ -9,8 +9,11 @@ import os
import sys
from UM.Platform import Platform
from cura import ApplicationMetadata
from cura.ApplicationMetadata import CuraAppName
import sentry_sdk
parser = argparse.ArgumentParser(prog = "cura",
add_help = False)
parser.add_argument("--debug",
@ -18,8 +21,25 @@ parser.add_argument("--debug",
default = False,
help = "Turn on the debug mode by setting this option."
)
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"]:
def get_cura_dir_path():
if Platform.isWindows():

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -790,7 +790,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
container_info = ContainerInfo(None, None, None)
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,
# it might not have it's extruders set properly.
# it might not have its extruders set properly.
if not global_stack.extruders:
ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack)
extruder_stack = global_stack.extruders["0"]

View File

@ -97,7 +97,6 @@ Cura.MachineAction
text: Cura.MachineManager.activeMachine.name
horizontalAlignment: Text.AlignHCenter
font: UM.Theme.getFont("large_bold")
color: UM.Theme.getColor("text")
renderType: Text.NativeRendering
}

View File

@ -40,11 +40,13 @@ Item
// update active type label
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
break
}
}
visibility_handler.addSkipResetSetting(currentMeshType)
}
function setOverhangsMeshType()
@ -129,7 +131,7 @@ Item
}
Label
Label
{
id: meshTypeLabel
font: UM.Theme.getFont("default")
@ -203,6 +205,7 @@ Item
visibilityHandler: Cura.PerObjectSettingVisibilityHandler
{
id: visibility_handler
selectedObjectId: UM.ActiveTool.properties.getValue("SelectedObjectId")
}
@ -319,10 +322,7 @@ Item
Connections
{
target: inheritStackProvider
onPropertiesChanged:
{
provider.forcePropertiesChanged()
}
onPropertiesChanged: provider.forcePropertiesChanged()
}
Connections
@ -458,5 +458,4 @@ Item
Cura.SettingUnknown { }
}
}

View File

@ -7,133 +7,129 @@ import Cura 1.0 as Cura
import ".."
UM.Dialog
{
id: settingPickDialog
title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
width: screenScaleFactor * 360
property var additional_excluded_settings
onVisibilityChanged:
{
id: settingPickDialog
title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
width: screenScaleFactor * 360
property var additional_excluded_settings
onVisibilityChanged:
// force updating the model to sync it with addedSettingsModel
if (visible)
{
// force updating the model to sync it with addedSettingsModel
if (visible)
{
// Set skip setting, it will prevent from resetting selected mesh_type
contents.model.visibilityHandler.addSkipResetSetting(currentMeshType)
listview.model.forceUpdate()
updateFilter()
}
listview.model.forceUpdate()
updateFilter()
}
function updateFilter()
{
var new_filter = {}
new_filter["settable_per_mesh"] = true
// Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value`
// is set to "one_at_a_time", because the current backend architecture isn't ready for that.
if (filterInput.text != "")
{
new_filter["i18n_label"] = "*" + filterInput.text
}
listview.model.filter = new_filter
}
TextField {
id: filterInput
anchors {
top: parent.top
left: parent.left
right: toggleShowAll.left
rightMargin: UM.Theme.getSize("default_margin").width
}
placeholderText: catalog.i18nc("@label:textbox", "Filter...")
onTextChanged: settingPickDialog.updateFilter()
}
CheckBox
{
id: toggleShowAll
anchors {
top: parent.top
right: parent.right
}
text: catalog.i18nc("@label:checkbox", "Show all")
checked: listview.model.showAll
onClicked:
{
listview.model.showAll = checked
}
}
ScrollView
{
id: scrollView
anchors
{
top: filterInput.bottom
left: parent.left
right: parent.right
bottom: parent.bottom
}
ListView
{
id:listview
model: UM.SettingDefinitionsModel
{
id: definitionsModel
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
expanded: [ "*" ]
exclude:
{
var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]
excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings)
return excluded_settings
}
}
delegate:Loader
{
id: loader
width: parent.width
height: model.type != undefined ? UM.Theme.getSize("section").height : 0
property var definition: model
property var settingDefinitionsModel: definitionsModel
asynchronous: true
source:
{
switch(model.type)
{
case "category":
return "PerObjectCategory.qml"
default:
return "PerObjectItem.qml"
}
}
}
Component.onCompleted: settingPickDialog.updateFilter()
}
}
rightButtons: [
Button {
text: catalog.i18nc("@action:button", "Close")
onClicked: {
settingPickDialog.visible = false
}
}
]
}
function updateFilter()
{
var new_filter = {}
new_filter["settable_per_mesh"] = true
// Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value`
// is set to "one_at_a_time", because the current backend architecture isn't ready for that.
if (filterInput.text != "")
{
new_filter["i18n_label"] = "*" + filterInput.text
}
listview.model.filter = new_filter
}
TextField
{
id: filterInput
anchors
{
top: parent.top
left: parent.left
right: toggleShowAll.left
rightMargin: UM.Theme.getSize("default_margin").width
}
placeholderText: catalog.i18nc("@label:textbox", "Filter...")
onTextChanged: settingPickDialog.updateFilter()
}
CheckBox
{
id: toggleShowAll
anchors
{
top: parent.top
right: parent.right
}
text: catalog.i18nc("@label:checkbox", "Show all")
checked: listview.model.showAll
onClicked: listview.model.showAll = checked
}
ScrollView
{
id: scrollView
anchors
{
top: filterInput.bottom
left: parent.left
right: parent.right
bottom: parent.bottom
}
ListView
{
id:listview
model: UM.SettingDefinitionsModel
{
id: definitionsModel
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
expanded: [ "*" ]
exclude:
{
var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]
excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings)
return excluded_settings
}
}
delegate:Loader
{
id: loader
width: parent.width
height: model.type != undefined ? UM.Theme.getSize("section").height : 0
property var definition: model
property var settingDefinitionsModel: definitionsModel
asynchronous: true
source:
{
switch(model.type)
{
case "category":
return "PerObjectCategory.qml"
default:
return "PerObjectItem.qml"
}
}
}
Component.onCompleted: settingPickDialog.updateFilter()
}
}
rightButtons: [
Button
{
text: catalog.i18nc("@action:button", "Close")
onClicked: settingPickDialog.visible = false
}
]
}

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

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

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

View File

@ -65,10 +65,7 @@ class SolidView(View):
else:
self._support_angle = support_angle_stack.getProperty("support_angle", "value")
def beginRendering(self):
scene = self.getController().getScene()
renderer = self.getRenderer()
def _checkSetup(self):
if not self._extruders_model:
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_width", 5.0)
def beginRendering(self):
scene = self.getController().getScene()
renderer = self.getRenderer()
self._checkSetup()
global_container_stack = Application.getInstance().getGlobalContainerStack()
if global_container_stack:
if Application.getInstance().getPreferences().getValue("view/show_overhang"):

View File

@ -239,7 +239,7 @@ class VersionUpgrade41to42(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.

View File

@ -104,7 +104,7 @@ class VersionUpgrade42to43(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.

View File

@ -52,7 +52,7 @@ class VersionUpgrade43to44(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.

View File

@ -3,10 +3,17 @@ from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon
# When both are present, machine_head_polygon will be removed
# When only one of the two is present, it's value will be used
# Settings that were merged into one. Each one is a pair of settings. If both
# are overwritten, the key wins. If only the key or the value is overwritten,
# 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):
def getCfgVersion(self, serialised: str) -> int:
@ -35,20 +42,26 @@ class VersionUpgrade44to45(VersionUpgrade):
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "11"
if "values" in parser:
# merge machine_head_with_fans_polygon (preferred) and machine_head_polygon
if "machine_head_with_fans_polygon" in parser["values"]:
if "machine_head_polygon" in parser["values"]:
del parser["values"]["machine_head_polygon"]
elif "machine_head_polygon" in parser["values"]:
parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"]
del parser["values"]["machine_head_polygon"]
# Merged settings: When two settings are merged, one is preferred.
# If the preferred one is available, that value is taken regardless
# of the other one. If only the non-preferred one is available, that
# value is moved to the preferred setting value.
for preferred, removed in _merged_settings.items():
if removed in parser["values"]:
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()
parser.write(result)

View File

@ -1106,6 +1106,12 @@ class XmlMaterialProfile(InstanceContainer):
"break preparation speed": "material_break_preparation_speed",
"break preparation temperature": "material_break_preparation_temperature",
"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 temperature": "material_break_temperature"
} # type: Dict[str, str]

View File

@ -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": {
"package_info": {
"package_id": "SimulationView",

View File

@ -58,9 +58,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"machine_heat_zone_length": {
"default_value": 20
},

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

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

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

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

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

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

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

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

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

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

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

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

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

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

View File

@ -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"
}
}
}

View File

@ -2084,7 +2084,6 @@
"maximum_value": "machine_height",
"type": "float",
"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",
"enabled": "infill_sparse_density > 0",
"settable_per_mesh": true,
@ -2420,6 +2419,54 @@
"settable_per_mesh": false,
"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":
{
"label": "Flow",
@ -4233,8 +4280,8 @@
"minimum_value_warning": "1 if support_pattern == 'concentric' else 0",
"maximum_value_warning": "3",
"type": "int",
"value": "1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0",
"enabled": "support_enable",
"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 or support_tree_enable",
"limit_to_extruder": "support_infill_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -6186,38 +6233,6 @@
"settable_per_mesh": false,
"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":
{
"label": "Slicing Tolerance",

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

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

View File

@ -47,9 +47,6 @@
"machine_nozzle_head_distance": {
"default_value": 3
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"layer_height_0": {
"default_value": 0.2
},

View File

@ -58,9 +58,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"machine_heat_zone_length": {
"default_value": 16
},

File diff suppressed because it is too large Load Diff

View File

@ -76,9 +76,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"machine_heat_zone_length": {
"default_value": 20
},

View File

@ -47,7 +47,6 @@
"machine_nozzle_tip_outer_diameter": { "default_value": 1 },
"machine_nozzle_head_distance": { "default_value": 3 },
"machine_nozzle_expansion_angle": { "default_value": 45 },
"machine_max_acceleration_x": { "default_value": 6000 },
"machine_max_acceleration_y": { "default_value": 6000 },

View File

@ -74,9 +74,6 @@
"machine_nozzle_head_distance": {
"default_value": 3
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"machine_max_feedrate_x": {
"default_value": 300
},

View File

@ -52,9 +52,6 @@
"machine_nozzle_head_distance": {
"default_value": 5
},
"machine_nozzle_expansion_angle": {
"default_value": 45
},
"machine_heat_zone_length": {
"default_value": 20
},

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

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

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

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

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

View File

@ -3,7 +3,7 @@
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "anet_a6",
"machine": "anet3d",
"position": "0"
},

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

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

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View 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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View 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

View 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

View File

@ -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

View 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

View 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

View File

@ -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

View File

@ -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

View 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

View 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

View 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

View File

@ -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

View 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

View 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

View 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

View File

@ -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

View 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

View 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

View 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

View File

@ -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

View 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

View 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

View 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

View File

@ -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

View 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

View 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

View File

@ -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

View File

@ -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

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