Merge branch 'master' into remove-package-check

This commit is contained in:
Jack Ha 2018-07-09 11:25:19 +02:00
commit bff9a3afb5
172 changed files with 557 additions and 518 deletions

View File

@ -1,12 +1,13 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2018 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 io import io
import os import os
import re import re
import shutil import shutil
from typing import Optional from typing import Dict, Optional
from zipfile import ZipFile, ZIP_DEFLATED, BadZipfile from zipfile import ZipFile, ZIP_DEFLATED, BadZipfile
from UM import i18nCatalog from UM import i18nCatalog
@ -28,9 +29,9 @@ class Backup:
# Re-use translation catalog. # Re-use translation catalog.
catalog = i18nCatalog("cura") catalog = i18nCatalog("cura")
def __init__(self, zip_file: bytes = None, meta_data: dict = None) -> None: def __init__(self, zip_file: bytes = None, meta_data: Dict[str, str] = None) -> None:
self.zip_file = zip_file # type: Optional[bytes] self.zip_file = zip_file # type: Optional[bytes]
self.meta_data = meta_data # type: Optional[dict] self.meta_data = meta_data # type: Optional[Dict[str, str]]
## Create a back-up from the current user config folder. ## Create a back-up from the current user config folder.
def makeFromCurrent(self) -> None: def makeFromCurrent(self) -> None:

View File

@ -1,6 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V. # Copyright (c) 2018 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.
from typing import Optional, Tuple
from typing import Dict, Optional, Tuple
from UM.Logger import Logger from UM.Logger import Logger
from cura.Backups.Backup import Backup from cura.Backups.Backup import Backup
@ -18,7 +19,7 @@ class BackupsManager:
## Get a back-up of the current configuration. ## Get a back-up of the current configuration.
# \return A tuple containing a ZipFile (the actual back-up) and a dict # \return A tuple containing a ZipFile (the actual back-up) and a dict
# containing some metadata (like version). # containing some metadata (like version).
def createBackup(self) -> Tuple[Optional[bytes], Optional[dict]]: def createBackup(self) -> Tuple[Optional[bytes], Optional[Dict[str, str]]]:
self._disableAutoSave() self._disableAutoSave()
backup = Backup() backup = Backup()
backup.makeFromCurrent() backup.makeFromCurrent()
@ -30,7 +31,7 @@ class BackupsManager:
# \param zip_file A bytes object containing the actual back-up. # \param zip_file A bytes object containing the actual back-up.
# \param meta_data A dict containing some metadata that is needed to # \param meta_data A dict containing some metadata that is needed to
# restore the back-up correctly. # restore the back-up correctly.
def restoreBackup(self, zip_file: bytes, meta_data: dict) -> None: def restoreBackup(self, zip_file: bytes, meta_data: Dict[str, str]) -> None:
if not meta_data.get("cura_release", None): if not meta_data.get("cura_release", None):
# If there is no "cura_release" specified in the meta data, we don't execute a backup restore. # If there is no "cura_release" specified in the meta data, we don't execute a backup restore.
Logger.log("w", "Tried to restore a backup without specifying a Cura version number.") Logger.log("w", "Tried to restore a backup without specifying a Cura version number.")
@ -43,13 +44,13 @@ class BackupsManager:
if restored: if restored:
# At this point, Cura will need to restart for the changes to take effect. # At this point, Cura will need to restart for the changes to take effect.
# We don't want to store the data at this point as that would override the just-restored backup. # We don't want to store the data at this point as that would override the just-restored backup.
self._application.windowClosed(save_data=False) self._application.windowClosed(save_data = False)
## Here we try to disable the auto-save plug-in as it might interfere with ## Here we try to disable the auto-save plug-in as it might interfere with
# restoring a back-up. # restoring a back-up.
def _disableAutoSave(self): def _disableAutoSave(self) -> None:
self._application.setSaveDataEnabled(False) self._application.setSaveDataEnabled(False)
## Re-enable auto-save after we're done. ## Re-enable auto-save after we're done.
def _enableAutoSave(self): def _enableAutoSave(self) -> None:
self._application.setSaveDataEnabled(True) self._application.setSaveDataEnabled(True)

View File

@ -47,10 +47,10 @@ class BuildVolume(SceneNode):
self._disallowed_area_color = None self._disallowed_area_color = None
self._error_area_color = None self._error_area_color = None
self._width = 0 self._width = 0 #type: float
self._height = 0 self._height = 0 #type: float
self._depth = 0 self._depth = 0 #type: float
self._shape = "" self._shape = "" #type: str
self._shader = None self._shader = None
@ -154,19 +154,19 @@ class BuildVolume(SceneNode):
if active_extruder_changed is not None: if active_extruder_changed is not None:
active_extruder_changed.connect(self._updateDisallowedAreasAndRebuild) active_extruder_changed.connect(self._updateDisallowedAreasAndRebuild)
def setWidth(self, width): def setWidth(self, width: float) -> None:
if width is not None: if width is not None:
self._width = width self._width = width
def setHeight(self, height): def setHeight(self, height: float) -> None:
if height is not None: if height is not None:
self._height = height self._height = height
def setDepth(self, depth): def setDepth(self, depth: float) -> None:
if depth is not None: if depth is not None:
self._depth = depth self._depth = depth
def setShape(self, shape: str): def setShape(self, shape: str) -> None:
if shape: if shape:
self._shape = shape self._shape = shape
@ -294,7 +294,7 @@ class BuildVolume(SceneNode):
if not self._width or not self._height or not self._depth: if not self._width or not self._height or not self._depth:
return return
if not self._application._qml_engine: if not self._engine_ready:
return return
if not self._volume_outline_color: if not self._volume_outline_color:

View File

@ -84,7 +84,6 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager
from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager
from cura.Machines.VariantManager import VariantManager from cura.Machines.VariantManager import VariantManager
from plugins.SliceInfoPlugin.SliceInfo import SliceInfo
from .SingleInstance import SingleInstance from .SingleInstance import SingleInstance
from .AutoSave import AutoSave from .AutoSave import AutoSave
@ -110,6 +109,10 @@ from cura.ObjectsModel import ObjectsModel
from UM.FlameProfiler import pyqtSlot from UM.FlameProfiler import pyqtSlot
if TYPE_CHECKING:
from plugins.SliceInfoPlugin.SliceInfo import SliceInfo
numpy.seterr(all = "ignore") numpy.seterr(all = "ignore")
try: try:
@ -407,43 +410,6 @@ class CuraApplication(QtApplication):
} }
) )
"""
self._currently_loading_files = []
self._non_sliceable_extensions = []
self._machine_action_manager = MachineActionManager.MachineActionManager()
self._machine_manager = None # This is initialized on demand.
self._extruder_manager = None
self._material_manager = None
self._quality_manager = None
self._object_manager = None
self._build_plate_model = None
self._multi_build_plate_model = None
self._setting_visibility_presets_model = None
self._setting_inheritance_manager = None
self._simple_mode_settings_manager = None
self._cura_scene_controller = None
self._machine_error_checker = None
self._auto_save = None
self._save_data_enabled = True
self._additional_components = {} # Components to add to certain areas in the interface
super().__init__(name = "cura",
version = CuraVersion,
buildtype = CuraBuildType,
is_debug_mode = CuraDebugMode,
tray_icon_name = "cura-icon-32.png",
**kwargs)
# FOR TESTING ONLY
if kwargs["parsed_command_line"].get("trigger_early_crash", False):
assert not "This crash is triggered by the trigger_early_crash command line argument."
self._variant_manager = None
self.default_theme = "cura-light"
"""
# Runs preparations that needs to be done before the starting process. # Runs preparations that needs to be done before the starting process.
def startSplashWindowPhase(self): def startSplashWindowPhase(self):
super().startSplashWindowPhase() super().startSplashWindowPhase()
@ -1518,7 +1484,9 @@ class CuraApplication(QtApplication):
@pyqtSlot("QSize") @pyqtSlot("QSize")
def setMinimumWindowSize(self, size): def setMinimumWindowSize(self, size):
self.getMainWindow().setMinimumSize(size) main_window = self.getMainWindow()
if main_window:
main_window.setMinimumSize(size)
def getBuildVolume(self): def getBuildVolume(self):
return self._volume return self._volume

View File

@ -48,7 +48,7 @@ class CuraContainerStack(ContainerStack):
self._empty_material = self._container_registry.findInstanceContainers(id = "empty_material")[0] #type: InstanceContainer self._empty_material = self._container_registry.findInstanceContainers(id = "empty_material")[0] #type: InstanceContainer
self._empty_variant = self._container_registry.findInstanceContainers(id = "empty_variant")[0] #type: InstanceContainer self._empty_variant = self._container_registry.findInstanceContainers(id = "empty_variant")[0] #type: InstanceContainer
self._containers = [self._empty_instance_container for i in range(len(_ContainerIndexes.IndexTypeMap))] #type: List[Union[InstanceContainer, DefinitionContainer]] self._containers = [self._empty_instance_container for i in range(len(_ContainerIndexes.IndexTypeMap))] #type: List[ContainerInterface]
self._containers[_ContainerIndexes.QualityChanges] = self._empty_quality_changes self._containers[_ContainerIndexes.QualityChanges] = self._empty_quality_changes
self._containers[_ContainerIndexes.Quality] = self._empty_quality self._containers[_ContainerIndexes.Quality] = self._empty_quality
self._containers[_ContainerIndexes.Material] = self._empty_material self._containers[_ContainerIndexes.Material] = self._empty_material

View File

@ -95,7 +95,9 @@ class SingleInstance:
elif command == "focus": elif command == "focus":
# Operating systems these days prevent windows from moving around by themselves. # Operating systems these days prevent windows from moving around by themselves.
# 'alert' or flashing the icon in the taskbar is the best thing we do now. # 'alert' or flashing the icon in the taskbar is the best thing we do now.
self._application.callLater(lambda: self._application.getMainWindow().alert(0)) main_window = self._application.getMainWindow()
if main_window is not None:
self._application.callLater(lambda: main_window.alert(0)) # type: ignore # I don't know why MyPy complains here
# Command: Close the socket connection. We're done. # Command: Close the socket connection. We're done.
elif command == "close-connection": elif command == "close-connection":

View File

@ -12,14 +12,14 @@ from UM.Platform import Platform
parser = argparse.ArgumentParser(prog = "cura", parser = argparse.ArgumentParser(prog = "cura",
add_help = False) add_help = False)
parser.add_argument('--debug', parser.add_argument("--debug",
action='store_true', action="store_true",
default = False, default = False,
help = "Turn on the debug mode by setting this option." help = "Turn on the debug mode by setting this option."
) )
parser.add_argument('--trigger-early-crash', parser.add_argument("--trigger-early-crash",
dest = 'trigger_early_crash', dest = "trigger_early_crash",
action = 'store_true', action = "store_true",
default = False, default = False,
help = "FOR TESTING ONLY. Trigger an early crash to show the crash dialog." help = "FOR TESTING ONLY. Trigger an early crash to show the crash dialog."
) )

View File

@ -41,15 +41,11 @@ class StartJobResult(IntEnum):
## Formatter class that handles token expansion in start/end gcode ## Formatter class that handles token expansion in start/end gcode
class GcodeStartEndFormatter(Formatter): class GcodeStartEndFormatter(Formatter):
def get_value(self, key: str, *args: str, **kwargs) -> str: #type: ignore # [CodeStyle: get_value is an overridden function from the Formatter class] def get_value(self, key: str, *args: str, default_extruder_nr: str = "-1", **kwargs) -> str: #type: ignore # [CodeStyle: get_value is an overridden function from the Formatter class]
# The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key), # The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key),
# and a default_extruder_nr to use when no extruder_nr is specified # and a default_extruder_nr to use when no extruder_nr is specified
if isinstance(key, str): extruder_nr = int(default_extruder_nr)
try:
extruder_nr = int(kwargs["default_extruder_nr"])
except ValueError:
extruder_nr = -1
key_fragments = [fragment.strip() for fragment in key.split(",")] key_fragments = [fragment.strip() for fragment in key.split(",")]
if len(key_fragments) == 2: if len(key_fragments) == 2:
@ -57,13 +53,13 @@ class GcodeStartEndFormatter(Formatter):
extruder_nr = int(key_fragments[1]) extruder_nr = int(key_fragments[1])
except ValueError: except ValueError:
try: try:
extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack #TODO: How can you ever provide the '-1' kwarg?
except (KeyError, ValueError): except (KeyError, ValueError):
# either the key does not exist, or the value is not an int # either the key does not exist, or the value is not an int
Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end g-code, using global stack", key_fragments[1], key_fragments[0]) Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end g-code, using global stack", key_fragments[1], key_fragments[0])
elif len(key_fragments) != 1: elif len(key_fragments) != 1:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key) Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key)
return "{" + str(key) + "}" return "{" + key + "}"
key = key_fragments[0] key = key_fragments[0]
try: try:
@ -71,9 +67,6 @@ class GcodeStartEndFormatter(Formatter):
except KeyError: except KeyError:
Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key) Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key)
return "{" + key + "}" return "{" + key + "}"
else:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key)
return "{" + str(key) + "}"
## Job class that builds up the message of scene data to send to CuraEngine. ## Job class that builds up the message of scene data to send to CuraEngine.

View File

@ -286,6 +286,9 @@ class FlavorParser:
self._cancelled = False self._cancelled = False
# We obtain the filament diameter from the selected extruder to calculate line widths # We obtain the filament diameter from the selected extruder to calculate line widths
global_stack = CuraApplication.getInstance().getGlobalContainerStack() global_stack = CuraApplication.getInstance().getGlobalContainerStack()
if not global_stack:
return None
self._filament_diameter = global_stack.extruders[str(self._extruder_number)].getProperty("material_diameter", "value") self._filament_diameter = global_stack.extruders[str(self._extruder_number)].getProperty("material_diameter", "value")
scene_node = CuraSceneNode() scene_node = CuraSceneNode()

View File

@ -104,9 +104,12 @@ class Script:
m = re.search('^-?[0-9]+\.?[0-9]*', sub_part) m = re.search('^-?[0-9]+\.?[0-9]*', sub_part)
if m is None: if m is None:
return default return default
try:
return int(m.group(0))
except ValueError: #Not an integer.
try: try:
return float(m.group(0)) return float(m.group(0))
except: except ValueError: #Not a number at all.
return default return default
## Convenience function to produce a line of g-code. ## Convenience function to produce a line of g-code.

View File

@ -1,5 +1,9 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from ..Script import Script from ..Script import Script
# from cura.Settings.ExtruderManager import ExtruderManager
from UM.Application import Application #To get the current printer's settings.
class PauseAtHeight(Script): class PauseAtHeight(Script):
def __init__(self): def __init__(self):
@ -136,6 +140,10 @@ class PauseAtHeight(Script):
layers_started = False layers_started = False
redo_layers = self.getSettingValueByKey("redo_layers") redo_layers = self.getSettingValueByKey("redo_layers")
standby_temperature = self.getSettingValueByKey("standby_temperature") standby_temperature = self.getSettingValueByKey("standby_temperature")
firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value")
control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value")
is_griffin = False
# T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value") # T = ExtruderManager.getInstance().getActiveExtruderStack().getProperty("material_print_temperature", "value")
@ -153,6 +161,8 @@ class PauseAtHeight(Script):
# Scroll each line of instruction for each layer in the G-code # Scroll each line of instruction for each layer in the G-code
for line in lines: for line in lines:
if ";FLAVOR:Griffin" in line:
is_griffin = True
# Fist positive layer reached # Fist positive layer reached
if ";LAYER:0" in line: if ";LAYER:0" in line:
layers_started = True layers_started = True
@ -162,12 +172,12 @@ class PauseAtHeight(Script):
#Track the latest printing temperature in order to resume at the correct temperature. #Track the latest printing temperature in order to resume at the correct temperature.
if line.startswith("T"): if line.startswith("T"):
current_t = int(self.getValue(line, "T")) current_t = self.getValue(line, "T")
m = self.getValue(line, "M") m = self.getValue(line, "M")
if m is not None and (int(m) == 104 or int(m) == 109) and self.getValue(line, "S") is not None: if m is not None and (m == 104 or m == 109) and self.getValue(line, "S") is not None:
extruder = current_t extruder = current_t
if self.getValue(line, "T") is not None: if self.getValue(line, "T") is not None:
extruder = int(self.getValue(line, "T")) extruder = self.getValue(line, "T")
target_temperature[extruder] = self.getValue(line, "S") target_temperature[extruder] = self.getValue(line, "S")
if not layers_started: if not layers_started:
@ -247,57 +257,67 @@ class PauseAtHeight(Script):
prepend_gcode += ";added code by post processing\n" prepend_gcode += ";added code by post processing\n"
prepend_gcode += ";script: PauseAtHeight.py\n" prepend_gcode += ";script: PauseAtHeight.py\n"
if pause_at == "height": if pause_at == "height":
prepend_gcode += ";current z: {z}\n".format(z=current_z) prepend_gcode += ";current z: {z}\n".format(z = current_z)
prepend_gcode += ";current height: {height}\n".format(height=current_height) prepend_gcode += ";current height: {height}\n".format(height = current_height)
else: else:
prepend_gcode += ";current layer: {layer}\n".format(layer=current_layer) prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer)
if not is_griffin:
# Retraction # Retraction
prepend_gcode += self.putValue(M=83) + "\n" prepend_gcode += self.putValue(M = 83) + "\n"
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G=1, E=-retraction_amount, F=retraction_speed * 60) + "\n" if firmware_retract:
prepend_gcode += self.putValue(G = 10)
else:
prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
# Move the head away # Move the head away
prepend_gcode += self.putValue(G=1, Z=current_z + 1, F=300) + "\n" prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
# This line should be ok # This line should be ok
prepend_gcode += self.putValue(G=1, X=park_x, Y=park_y, F=9000) + "\n" prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n"
if current_z < 15: if current_z < 15:
prepend_gcode += self.putValue(G=1, Z=15, F=300) + "\n" prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n"
if control_temperatures:
# Set extruder standby temperature # Set extruder standby temperature
prepend_gcode += self.putValue(M=104, S=standby_temperature) + "; standby temperature\n" prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n"
# Wait till the user continues printing # Wait till the user continues printing
prepend_gcode += self.putValue(M=0) + ";Do the actual pause\n" prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n"
if not is_griffin:
if control_temperatures:
# Set extruder resume temperature # Set extruder resume temperature
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n" prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n"
# Push the filament back, # Push the filament back,
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G=1, E=retraction_amount, F=retraction_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
# Optionally extrude material # Optionally extrude material
if extrude_amount != 0: if extrude_amount != 0:
prepend_gcode += self.putValue(G=1, E=extrude_amount, F=extrude_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n"
# and retract again, the properly primes the nozzle # and retract again, the properly primes the nozzle
# when changing filament. # when changing filament.
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G=1, E=-retraction_amount, F=retraction_speed * 60) + "\n" prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n"
# Move the head back # Move the head back
prepend_gcode += self.putValue(G=1, Z=current_z + 1, F=300) + "\n" prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n"
prepend_gcode += self.putValue(G=1, X=x, Y=y, F=9000) + "\n" prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
if retraction_amount != 0: if retraction_amount != 0:
prepend_gcode += self.putValue(G=1, E=retraction_amount, F=retraction_speed * 60) + "\n" if firmware_retract:
prepend_gcode += self.putValue(G=1, F=9000) + "\n" prepend_gcode += self.putValue(G = 11)
prepend_gcode += self.putValue(M=82) + "\n" else:
prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n"
prepend_gcode += self.putValue(G = 1, F = 9000) + "\n"
prepend_gcode += self.putValue(M = 82) + "\n"
# reset extrude value to pre pause value # reset extrude value to pre pause value
prepend_gcode += self.putValue(G=92, E=current_e) + "\n" prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"
layer = prepend_gcode + layer layer = prepend_gcode + layer

View File

@ -76,11 +76,26 @@ Item
} }
} }
Component
{
id: columnTextDelegate
Label
{
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
text: styleData.value || ""
elide: Text.ElideRight
color: UM.Theme.getColor("text_medium")
font: UM.Theme.getFont("default")
}
}
TableViewColumn TableViewColumn
{ {
role: "machine" role: "machine"
title: "Machine" title: "Machine"
width: Math.floor(table.width * 0.25) width: Math.floor(table.width * 0.25)
delegate: columnTextDelegate
} }
TableViewColumn TableViewColumn
{ {

View File

@ -74,6 +74,7 @@ Item
} }
spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) spacing: Math.floor(UM.Theme.getSize("narrow_margin").height)
width: childrenRect.width width: childrenRect.width
height: childrenRect.height
Label Label
{ {
text: catalog.i18nc("@label", "Version") + ":" text: catalog.i18nc("@label", "Version") + ":"
@ -110,6 +111,7 @@ Item
topMargin: UM.Theme.getSize("default_margin").height topMargin: UM.Theme.getSize("default_margin").height
} }
spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) spacing: Math.floor(UM.Theme.getSize("narrow_margin").height)
height: childrenRect.height
Label Label
{ {
text: details.version || catalog.i18nc("@label", "Unknown") text: details.version || catalog.i18nc("@label", "Unknown")

View File

@ -1,7 +1,7 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2018 Ultimaker B.V.
// Toolbox is released under the terms of the LGPLv3 or higher. // Toolbox is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2 import QtQuick 2.7
import QtQuick.Controls 1.4 import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
@ -9,10 +9,10 @@ import UM 1.1 as UM
Column Column
{ {
height: childrenRect.height height: childrenRect.height + 2 * padding
width: parent.width width: parent.width
spacing: UM.Theme.getSize("default_margin").height spacing: UM.Theme.getSize("default_margin").height
padding: UM.Theme.getSize("wide_margin").height
Label Label
{ {
id: heading id: heading
@ -25,7 +25,7 @@ Column
{ {
id: grid id: grid
property var model: toolbox.viewCategory == "material" ? toolbox.authorsModel : toolbox.packagesModel property var model: toolbox.viewCategory == "material" ? toolbox.authorsModel : toolbox.packagesModel
width: parent.width width: parent.width - 2 * parent.padding
columns: 2 columns: 2
columnSpacing: UM.Theme.getSize("default_margin").height columnSpacing: UM.Theme.getSize("default_margin").height
rowSpacing: UM.Theme.getSize("default_margin").width rowSpacing: UM.Theme.getSize("default_margin").width

View File

@ -15,22 +15,15 @@ ScrollView
flickableItem.flickableDirection: Flickable.VerticalFlick flickableItem.flickableDirection: Flickable.VerticalFlick
Column Column
{ {
width: parent.width - 2 * padding width: base.width
spacing: UM.Theme.getSize("default_margin").height spacing: UM.Theme.getSize("default_margin").height
padding: UM.Theme.getSize("wide_margin").height height: childrenRect.height
height: childrenRect.height + 2 * padding
ToolboxDownloadsShowcase ToolboxDownloadsShowcase
{ {
id: showcase id: showcase
width: parent.width width: parent.width
} }
Rectangle
{
color: UM.Theme.getColor("lining")
width: parent.width
height: UM.Theme.getSize("default_lining").height
}
ToolboxDownloadsGrid ToolboxDownloadsGrid
{ {

View File

@ -1,16 +1,22 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2018 Ultimaker B.V.
// Toolbox is released under the terms of the LGPLv3 or higher. // Toolbox is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2 import QtQuick 2.7
import QtQuick.Controls 1.4 import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Styles 1.4
import UM 1.1 as UM import UM 1.1 as UM
Column Rectangle
{ {
color: UM.Theme.getColor("secondary")
height: childrenRect.height height: childrenRect.height
width: parent.width
Column
{
height: childrenRect.height + 2 * padding
spacing: UM.Theme.getSize("toolbox_showcase_spacing").width spacing: UM.Theme.getSize("toolbox_showcase_spacing").width
width: parent.width width: parent.width
padding: UM.Theme.getSize("wide_margin").height
Label Label
{ {
id: heading id: heading
@ -43,4 +49,5 @@ Column
delegate: ToolboxDownloadsShowcaseTile {} delegate: ToolboxDownloadsShowcaseTile {}
} }
} }
}
} }

View File

@ -1,37 +1,31 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2018 Ultimaker B.V.
// Toolbox is released under the terms of the LGPLv3 or higher. // Toolbox is released under the terms of the LGPLv3 or higher.
import QtQuick 2.3 import QtQuick 2.7
import QtQuick.Controls 1.4 import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0
import UM 1.1 as UM import UM 1.1 as UM
Item Rectangle
{ {
width: UM.Theme.getSize("toolbox_thumbnail_large").width id: tileBase
height: thumbnail.height + packageName.height width: UM.Theme.getSize("toolbox_thumbnail_large").width + (2 * UM.Theme.getSize("default_lining").width)
Rectangle height: thumbnail.height + packageNameBackground.height + (2 * UM.Theme.getSize("default_lining").width)
{ border.width: UM.Theme.getSize("default_lining").width
id: highlight border.color: UM.Theme.getColor("lining")
anchors.fill: parent color: "transparent"
opacity: 0.0
color: UM.Theme.getColor("primary")
}
Rectangle Rectangle
{ {
id: thumbnail id: thumbnail
color: "white" color: "white"
width: UM.Theme.getSize("toolbox_thumbnail_large").width width: UM.Theme.getSize("toolbox_thumbnail_large").width
height: UM.Theme.getSize("toolbox_thumbnail_large").height height: UM.Theme.getSize("toolbox_thumbnail_large").height
border
{
width: UM.Theme.getSize("default_lining").width
color: UM.Theme.getColor("lining")
}
anchors anchors
{ {
top: parent.top top: parent.top
horizontalCenter: parent.horizontalCenter horizontalCenter: parent.horizontalCenter
topMargin: UM.Theme.getSize("default_lining").width
} }
Image Image
{ {
@ -43,13 +37,23 @@ Item
mipmap: true mipmap: true
} }
} }
Rectangle
{
id: packageNameBackground
color: UM.Theme.getColor("primary")
anchors
{
top: thumbnail.bottom
horizontalCenter: parent.horizontalCenter
}
height: UM.Theme.getSize("toolbox_heading_label").height
width: parent.width
Label Label
{ {
id: packageName id: packageName
text: model.name text: model.name
anchors anchors
{ {
top: thumbnail.bottom
horizontalCenter: parent.horizontalCenter horizontalCenter: parent.horizontalCenter
} }
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
@ -57,22 +61,25 @@ Item
height: UM.Theme.getSize("toolbox_heading_label").height height: UM.Theme.getSize("toolbox_heading_label").height
width: parent.width width: parent.width
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: UM.Theme.getColor("text") color: UM.Theme.getColor("button_text")
font: UM.Theme.getFont("medium_bold") font: UM.Theme.getFont("medium_bold")
} }
}
MouseArea MouseArea
{ {
anchors.fill: parent anchors.fill: parent
hoverEnabled: true hoverEnabled: true
onEntered: onEntered:
{ {
thumbnail.border.color = UM.Theme.getColor("primary") packageName.color = UM.Theme.getColor("button_text_hover")
highlight.opacity = 0.1 packageNameBackground.color = UM.Theme.getColor("primary_hover")
tileBase.border.color = UM.Theme.getColor("primary_hover")
} }
onExited: onExited:
{ {
thumbnail.border.color = UM.Theme.getColor("lining") packageName.color = UM.Theme.getColor("button_text")
highlight.opacity = 0.0 packageNameBackground.color = UM.Theme.getColor("primary")
tileBase.border.color = UM.Theme.getColor("lining")
} }
onClicked: onClicked:
{ {

View File

@ -15,6 +15,7 @@ Item
Label Label
{ {
text: catalog.i18nc("@info", "You will need to restart Cura before changes in packages have effect.") text: catalog.i18nc("@info", "You will need to restart Cura before changes in packages have effect.")
color: UM.Theme.getColor("text")
height: Math.floor(UM.Theme.getSize("toolbox_footer_button").height) height: Math.floor(UM.Theme.getSize("toolbox_footer_button").height)
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
anchors anchors
@ -25,6 +26,7 @@ Item
right: restartButton.right right: restartButton.right
rightMargin: UM.Theme.getSize("default_margin").width rightMargin: UM.Theme.getSize("default_margin").width
} }
} }
Button Button
{ {

View File

@ -234,6 +234,11 @@ class Toolbox(QObject, Extension):
if not self._dialog: if not self._dialog:
self._dialog = self._createDialog("Toolbox.qml") self._dialog = self._createDialog("Toolbox.qml")
if not self._dialog:
Logger.log("e", "Unexpected error trying to create the 'Toolbox' dialog.")
return
self._dialog.show() self._dialog.show()
# Apply enabled/disabled state to installed plugins # Apply enabled/disabled state to installed plugins
@ -241,7 +246,10 @@ class Toolbox(QObject, Extension):
def _createDialog(self, qml_name: str) -> Optional[QObject]: def _createDialog(self, qml_name: str) -> Optional[QObject]:
Logger.log("d", "Toolbox: Creating dialog [%s].", qml_name) Logger.log("d", "Toolbox: Creating dialog [%s].", qml_name)
path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "resources", "qml", qml_name) plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId())
if not plugin_path:
return None
path = os.path.join(plugin_path, "resources", "qml", qml_name)
dialog = self._application.createQmlComponent(path, {"toolbox": self}) dialog = self._application.createQmlComponent(path, {"toolbox": self})
return dialog return dialog

View File

@ -103,8 +103,12 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
else: else:
file_formats = CuraApplication.getInstance().getMeshFileHandler().getSupportedFileTypesWrite() file_formats = CuraApplication.getInstance().getMeshFileHandler().getSupportedFileTypesWrite()
global_stack = CuraApplication.getInstance().getGlobalContainerStack()
if not global_stack:
return
#Create a list from the supported file formats string. #Create a list from the supported file formats string.
machine_file_formats = CuraApplication.getInstance().getGlobalContainerStack().getMetaDataEntry("file_formats").split(";") machine_file_formats = global_stack.getMetaDataEntry("file_formats").split(";")
machine_file_formats = [file_type.strip() for file_type in machine_file_formats] machine_file_formats = [file_type.strip() for file_type in machine_file_formats]
#Exception for UM3 firmware version >=4.4: UFP is now supported and should be the preferred file format. #Exception for UM3 firmware version >=4.4: UFP is now supported and should be the preferred file format.
if "application/x-ufp" not in machine_file_formats and self.printerType == "ultimaker3" and Version(self.firmwareVersion) >= Version("4.4"): if "application/x-ufp" not in machine_file_formats and self.printerType == "ultimaker3" and Version(self.firmwareVersion) >= Version("4.4"):
@ -125,6 +129,10 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
else: else:
writer = CuraApplication.getInstance().getMeshFileHandler().getWriterByMimeType(cast(str, preferred_format["mime_type"])) writer = CuraApplication.getInstance().getMeshFileHandler().getWriterByMimeType(cast(str, preferred_format["mime_type"]))
if not writer:
Logger.log("e", "Unexpected error when trying to get the FileWriter")
return
#This function pauses with the yield, waiting on instructions on which printer it needs to print with. #This function pauses with the yield, waiting on instructions on which printer it needs to print with.
self._sending_job = self._sendPrintJob(writer, preferred_format, nodes) self._sending_job = self._sendPrintJob(writer, preferred_format, nodes)
self._sending_job.send(None) #Start the generator. self._sending_job.send(None) #Start the generator.
@ -205,6 +213,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
yield #To prevent having to catch the StopIteration exception. yield #To prevent having to catch the StopIteration exception.
def _sendPrintJobWaitOnWriteJobFinished(self, job: WriteFileJob) -> None: def _sendPrintJobWaitOnWriteJobFinished(self, job: WriteFileJob) -> None:
# This is the callback when the job finishes, where the message is created
assert(self._write_job_progress_message is not None)
self._write_job_progress_message.hide() self._write_job_progress_message.hide()
self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1, self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, dismissable = False, progress = -1,
@ -249,6 +259,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
self.activePrinterChanged.emit() self.activePrinterChanged.emit()
def _onPostPrintJobFinished(self, reply: QNetworkReply) -> None: def _onPostPrintJobFinished(self, reply: QNetworkReply) -> None:
if self._progress_message is not None:
self._progress_message.hide() self._progress_message.hide()
self._compressing_gcode = False self._compressing_gcode = False
self._sending_gcode = False self._sending_gcode = False

View File

@ -170,7 +170,10 @@ class DiscoverUM3Action(MachineAction):
Logger.log("d", "Creating additional ui components for UM3.") Logger.log("d", "Creating additional ui components for UM3.")
# Create networking dialog # Create networking dialog
path = os.path.join(PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), "UM3InfoComponents.qml") plugin_path = PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting")
if not plugin_path:
return
path = os.path.join(plugin_path, "UM3InfoComponents.qml")
self.__additional_components_view = CuraApplication.getInstance().createQmlComponent(path, {"manager": self}) self.__additional_components_view = CuraApplication.getInstance().createQmlComponent(path, {"manager": self})
if not self.__additional_components_view: if not self.__additional_components_view:
Logger.log("w", "Could not create ui components for UM3.") Logger.log("w", "Could not create ui components for UM3.")

View File

@ -23,7 +23,7 @@ if TYPE_CHECKING:
# #
# This way it won't freeze up the interface while sending those materials. # This way it won't freeze up the interface while sending those materials.
class SendMaterialJob(Job): class SendMaterialJob(Job):
def __init__(self, device: "ClusterUM3OutputDevice"): def __init__(self, device: "ClusterUM3OutputDevice") -> None:
super().__init__() super().__init__()
self.device = device #type: ClusterUM3OutputDevice self.device = device #type: ClusterUM3OutputDevice

View File

@ -6,6 +6,7 @@ import io
from UM.VersionUpgrade import VersionUpgrade from UM.VersionUpgrade import VersionUpgrade
deleted_settings = {"prime_tower_wall_thickness", "dual_pre_wipe", "prime_tower_purge_volume"}
## Upgrades configurations from the state they were in at version 3.4 to the ## Upgrades configurations from the state they were in at version 3.4 to the
# state they should be in at version 4.0. # state they should be in at version 4.0.
@ -68,6 +69,9 @@ class VersionUpgrade34to40(VersionUpgrade):
parser["metadata"]["setting_version"] = "5" parser["metadata"]["setting_version"] = "5"
self._resetConcentric3DInfillPattern(parser) self._resetConcentric3DInfillPattern(parser)
if "values" in parser:
for deleted_setting in deleted_settings:
del parser["values"][deleted_setting]
result = io.StringIO() result = io.StringIO()
parser.write(result) parser.write(result)

View File

@ -0,0 +1,35 @@
# Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
import configparser #To parse the resulting config files.
import pytest #To register tests with.
import VersionUpgrade34to40 #The module we're testing.
## Creates an instance of the upgrader to test with.
@pytest.fixture
def upgrader():
return VersionUpgrade34to40.VersionUpgrade34to40()
test_upgrade_version_nr_data = [
("Empty config file",
"""[general]
version = 5
[metadata]
setting_version = 4
"""
)
]
## Tests whether the version numbers are updated.
@pytest.mark.parametrize("test_name, file_data", test_upgrade_version_nr_data)
def test_upgradeVersionNr(test_name, file_data, upgrader):
#Perform the upgrade.
_, upgraded_instances = upgrader.upgradePreferences(file_data, "<string>")
upgraded_instance = upgraded_instances[0]
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(upgraded_instance)
#Check the new version.
assert parser["general"]["version"] == "6"
assert parser["metadata"]["setting_version"] == "5"

View File

@ -2,6 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
from math import pi, sin, cos, sqrt from math import pi, sin, cos, sqrt
from typing import Dict
import numpy import numpy
@ -42,7 +43,7 @@ class X3DReader(MeshReader):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
self._supported_extensions = [".x3d"] self._supported_extensions = [".x3d"]
self._namespaces = {} self._namespaces = {} # type: Dict[str, str]
# Main entry point # Main entry point
# Reads the file, returns a SceneNode (possibly with nested ones), or None # Reads the file, returns a SceneNode (possibly with nested ones), or None

View File

@ -24,7 +24,6 @@
"machine_depth": { "default_value": 149.86 }, "machine_depth": { "default_value": 149.86 },
"machine_height": { "default_value": 99.822 }, "machine_height": { "default_value": 99.822 },
"machine_center_is_zero": { "default_value": true }, "machine_center_is_zero": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[ 0, 0 ], [ 0, 0 ],

View File

@ -18,7 +18,6 @@
"overrides": { "overrides": {
"machine_name": { "default_value": "3Dator" }, "machine_name": { "default_value": "3Dator" },
"machine_nozzle_size": { "default_value": 0.5 },
"speed_travel": { "default_value": 120 }, "speed_travel": { "default_value": 120 },
"prime_tower_size": { "default_value": 8.660254037844387 }, "prime_tower_size": { "default_value": 8.660254037844387 },
"infill_sparse_density": { "default_value": 20 }, "infill_sparse_density": { "default_value": 20 },

View File

@ -26,9 +26,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[75, 18], [75, 18],

View File

@ -45,10 +45,6 @@
{ {
"default_value": false "default_value": false
}, },
"machine_nozzle_size":
{
"default_value": 0.4
},
"gantry_height": "gantry_height":
{ {
"default_value": 0 "default_value": 0

View File

@ -21,7 +21,6 @@
"prime_tower_size": { "default_value": 7.745966692414834 }, "prime_tower_size": { "default_value": 7.745966692414834 },
"machine_name": { "default_value": "BFB_Test" }, "machine_name": { "default_value": "BFB_Test" },
"machine_heated_bed": { "default_value": false }, "machine_heated_bed": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.5 },
"speed_layer_0": { "default_value": 25 }, "speed_layer_0": { "default_value": 25 },
"machine_width": { "default_value": 275 }, "machine_width": { "default_value": 275 },
"machine_gcode_flavor": { "default_value": "BFB" }, "machine_gcode_flavor": { "default_value": "BFB" },

View File

@ -54,7 +54,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View File

@ -54,7 +54,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View File

@ -53,7 +53,6 @@
"prime_tower_position_y": { "default_value": 178 }, "prime_tower_position_y": { "default_value": 178 },
"prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_wipe_enabled": { "default_value": false },
"prime_tower_min_volume": { "default_value": 50 }, "prime_tower_min_volume": { "default_value": 50 },
"dual_pre_wipe": { "default_value": false },
"prime_blob_enable": { "enabled": true }, "prime_blob_enable": { "enabled": true },

View File

@ -44,7 +44,7 @@
"material_print_temp_wait": { "default_value": false }, "material_print_temp_wait": { "default_value": false },
"material_bed_temp_wait": { "default_value": false }, "material_bed_temp_wait": { "default_value": false },
"prime_tower_enable": { "default_value": false }, "prime_tower_enable": { "default_value": false },
"prime_tower_wall_thickness": { "resolve": 0.7 }, "prime_tower_min_volume": { "value": "0.7" },
"prime_tower_size": { "value": 24.0 }, "prime_tower_size": { "value": 24.0 },
"prime_tower_position_x": { "value": 125 }, "prime_tower_position_x": { "value": 125 },
"prime_tower_position_y": { "value": 70 }, "prime_tower_position_y": { "value": 70 },

View File

@ -31,9 +31,6 @@
[30, 34] [30, 34]
] ]
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"layer_height_0": { "layer_height_0": {
"default_value": 0.2 "default_value": 0.2
}, },

View File

@ -27,9 +27,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[17, 70], [17, 70],

View File

@ -28,9 +28,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[17, 40], [17, 40],

View File

@ -22,7 +22,6 @@
"speed_wall_0": { "default_value": 30 }, "speed_wall_0": { "default_value": 30 },
"speed_topbottom": { "default_value": 30 }, "speed_topbottom": { "default_value": 30 },
"layer_height": { "default_value": 0.2 }, "layer_height": { "default_value": 0.2 },
"machine_nozzle_size": { "default_value": 0.5 },
"speed_print": { "default_value": 30 }, "speed_print": { "default_value": 30 },
"speed_infill": { "default_value": 30 }, "speed_infill": { "default_value": 30 },
"machine_extruder_count": { "default_value": 1 }, "machine_extruder_count": { "default_value": 1 },

View File

@ -23,7 +23,6 @@
"machine_height": { "default_value": 250 }, "machine_height": { "default_value": 250 },
"machine_depth": { "default_value": 190 }, "machine_depth": { "default_value": 190 },
"machine_center_is_zero": { "default_value": true }, "machine_center_is_zero": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."}, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."},
"machine_end_gcode": { "default_value": "M104 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\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" }, "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\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" },

View File

@ -52,9 +52,6 @@
"bottom_thickness": { "bottom_thickness": {
"default_value": 1 "default_value": 1
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"speed_print": { "speed_print": {
"default_value": 75 "default_value": 75
}, },

View File

@ -35,7 +35,6 @@
"machine_depth": { "default_value": 234 }, "machine_depth": { "default_value": 234 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "default_value": [[-75, 35], [-75, -18], [18, 35], [18, -18]] }, "machine_head_with_fans_polygon": { "default_value": [[-75, 35], [-75, -18], [18, 35], [18, -18]] },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_max_feedrate_x": { "default_value": 250 }, "machine_max_feedrate_x": { "default_value": 250 },

View File

@ -4247,6 +4247,27 @@
} }
} }
}, },
"support_fan_enable":
{
"label": "Fan Speed Override",
"description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.",
"type": "bool",
"default_value": false,
"enabled": "support_enable",
"settable_per_mesh": false
},
"support_supported_skin_fan_speed":
{
"label": "Supported Skin Fan Speed",
"description": "Percentage fan speed to use when printing the skin regions immediately above the support. Using a high fan speed can make the support easier to remove.",
"unit": "%",
"minimum_value": "0",
"maximum_value": "100",
"default_value": 100,
"type": "float",
"enabled": "support_enable and support_fan_enable",
"settable_per_mesh": false
},
"support_use_towers": "support_use_towers":
{ {
"label": "Use Towers", "label": "Use Towers",
@ -4992,32 +5013,12 @@
"description": "The minimum volume for each layer of the prime tower in order to purge enough material.", "description": "The minimum volume for each layer of the prime tower in order to purge enough material.",
"unit": "mm³", "unit": "mm³",
"type": "float", "type": "float",
"default_value": 10, "default_value": 5,
"value": "8.48 if prime_tower_circular else 10",
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "round((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height'), 2) if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')", "maximum_value_warning": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')) - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume",
"enabled": "resolveOrValue('prime_tower_enable')", "enabled": "resolveOrValue('prime_tower_enable')",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true
"children":
{
"prime_tower_wall_thickness":
{
"label": "Prime Tower Thickness",
"description": "The thickness of the hollow prime tower. A thickness larger than half the Prime Tower Minimum Volume will result in a dense prime tower.",
"unit": "mm",
"type": "float",
"default_value": 2,
"value": "round(max(2 * prime_tower_line_width, (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - 4 * prime_tower_min_volume / (3.14159 * layer_height))))) if prime_tower_circular else (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - prime_tower_min_volume / layer_height))))), 3)",
"resolve": "max(extruderValues('prime_tower_wall_thickness'))",
"minimum_value": "0.001",
"minimum_value_warning": "2 * min(extruderValues('prime_tower_line_width')) - 0.0001",
"maximum_value_warning": "prime_tower_size / 2",
"enabled": "prime_tower_enable",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
}, },
"prime_tower_position_x": "prime_tower_position_x":
{ {
@ -5072,29 +5073,6 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"dual_pre_wipe":
{
"label": "Wipe Nozzle After Switch",
"description": "After switching extruder, wipe the oozed material off of the nozzle on the first thing printed. This performs a safe slow wipe move at a place where the oozed material causes least harm to the surface quality of your print.",
"type": "bool",
"enabled": "resolveOrValue('prime_tower_enable')",
"default_value": true,
"settable_per_mesh": false,
"settable_per_extruder": true
},
"prime_tower_purge_volume":
{
"label": "Prime Tower Purge Volume",
"description": "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle.",
"type": "float",
"enabled": "resolveOrValue('prime_tower_enable') and dual_pre_wipe",
"unit": "mm³",
"default_value": 0,
"minimum_value": "0",
"maximum_value_warning": "2.5",
"settable_per_mesh": false,
"settable_per_extruder": true
},
"ooze_shield_enabled": "ooze_shield_enabled":
{ {
"label": "Enable Ooze Shield", "label": "Enable Ooze Shield",

View File

@ -44,7 +44,6 @@
"retraction_amount": { "default_value": 1 }, "retraction_amount": { "default_value": 1 },
"retraction_speed": { "default_value": 50}, "retraction_speed": { "default_value": 50},
"material_flow": { "default_value": 87 }, "material_flow": { "default_value": 87 },
"machine_nozzle_size": { "default_value": 0.35 },
"adhesion_type": { "default_value": "skirt" }, "adhesion_type": { "default_value": "skirt" },
"skirt_brim_minimal_length": { "default_value": 130}, "skirt_brim_minimal_length": { "default_value": 130},

View File

@ -27,7 +27,6 @@
"machine_depth": { "default_value": 406 }, "machine_depth": { "default_value": 406 },
"machine_height": { "default_value": 533 }, "machine_height": { "default_value": 533 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.5 },
"layer_height": { "default_value": 0.2 }, "layer_height": { "default_value": 0.2 },
"layer_height_0": { "default_value": 0.3 }, "layer_height_0": { "default_value": 0.3 },
"retraction_amount": { "default_value": 1 }, "retraction_amount": { "default_value": 1 },

View File

@ -28,7 +28,6 @@
"machine_depth": { "default_value": 406 }, "machine_depth": { "default_value": 406 },
"machine_height": { "default_value": 533 }, "machine_height": { "default_value": 533 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.5 },
"layer_height": { "default_value": 0.2 }, "layer_height": { "default_value": 0.2 },
"layer_height_0": { "default_value": 0.3 }, "layer_height_0": { "default_value": 0.3 },
"retraction_amount": { "default_value": 1 }, "retraction_amount": { "default_value": 1 },

View File

@ -29,9 +29,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.5
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-75, -18], [-75, -18],

View File

@ -26,7 +26,6 @@
"machine_width": { "default_value": 170 }, "machine_width": { "default_value": 170 },
"machine_height": { "default_value": 145 }, "machine_height": { "default_value": 145 },
"machine_depth": { "default_value": 160 }, "machine_depth": { "default_value": 160 },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },

View File

@ -32,9 +32,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-43.7, -19.2], [-43.7, -19.2],

View File

@ -34,9 +34,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 2 "default_value": 2
}, },

View File

@ -35,9 +35,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 2 "default_value": 2
}, },

View File

@ -32,9 +32,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },

View File

@ -31,9 +31,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.35
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },

View File

@ -33,9 +33,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-75, -18], [-75, -18],

View File

@ -33,9 +33,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-75, -18], [-75, -18],

View File

@ -30,9 +30,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -30,9 +30,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -33,9 +33,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"gantry_height": { "gantry_height": {
"default_value": 55 "default_value": 55
}, },

View File

@ -29,9 +29,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[ -75, 35 ], [ -75, 35 ],

View File

@ -60,10 +60,6 @@
"machine_height": { "default_value": 120 }, "machine_height": { "default_value": 120 },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": {
"default_value": 0.4,
"minimum_value": 0.15
},
"machine_max_feedrate_x": { "default_value": 150 }, "machine_max_feedrate_x": { "default_value": 150 },
"machine_max_feedrate_y": { "default_value": 150 }, "machine_max_feedrate_y": { "default_value": 150 },
"machine_max_feedrate_z": { "default_value": 1.5 }, "machine_max_feedrate_z": { "default_value": 1.5 },

View File

@ -20,7 +20,6 @@
"machine_height": { "default_value": 300 }, "machine_height": { "default_value": 300 },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[ -3, 3 ], [ -3, 3 ],

View File

@ -70,9 +70,6 @@
"gantry_height": { "gantry_height": {
"default_value": 55 "default_value": 55
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -24,7 +24,6 @@
"infill_sparse_density": { "default_value": 15 }, "infill_sparse_density": { "default_value": 15 },
"speed_travel": { "default_value": 150 }, "speed_travel": { "default_value": 150 },
"layer_height": { "default_value": 0.3 }, "layer_height": { "default_value": 0.3 },
"machine_nozzle_size": { "default_value": 0.35 },
"material_print_temperature": { "default_value": 240 }, "material_print_temperature": { "default_value": 240 },
"machine_extruder_count": { "default_value": 5 }, "machine_extruder_count": { "default_value": 5 },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },

View File

@ -28,9 +28,6 @@
"machine_depth": { "machine_depth": {
"default_value": 130 "default_value": 130
}, },
"machine_nozzle_size": {
"default_value": 0.067
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -21,7 +21,6 @@
"machine_depth": { "default_value": 100 }, "machine_depth": { "default_value": 100 },
"machine_height": { "default_value": 130 }, "machine_height": { "default_value": 130 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.2 }, "layer_height": { "default_value": 0.2 },
"layer_height_0": { "default_value": 0.3 }, "layer_height_0": { "default_value": 0.3 },
"retraction_amount": { "default_value": 0.7 }, "retraction_amount": { "default_value": 0.7 },

View File

@ -22,7 +22,6 @@
"machine_height": { "default_value": 150 }, "machine_height": { "default_value": 150 },
"machine_depth": { "default_value": 140 }, "machine_depth": { "default_value": 140 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[-49, 20], [-49, 20],

View File

@ -22,7 +22,6 @@
"machine_height": { "default_value": 235 }, "machine_height": { "default_value": 235 },
"machine_depth": { "default_value": 150 }, "machine_depth": { "default_value": 150 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[ 55, -20 ], [ 55, -20 ],

View File

@ -19,7 +19,6 @@
"machine_width": { "default_value": 100 }, "machine_width": { "default_value": 100 },
"machine_depth": { "default_value": 100 }, "machine_depth": { "default_value": 100 },
"machine_height": { "default_value": 115 }, "machine_height": { "default_value": 115 },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[-40, 1000], [-40, 1000],

View File

@ -32,9 +32,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-75, -18], [-75, -18],

View File

@ -24,7 +24,6 @@
"machine_depth": { "default_value": 210 }, "machine_depth": { "default_value": 210 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"material_bed_temperature": { "default_value": 55 }, "material_bed_temperature": { "default_value": 55 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.1 }, "layer_height": { "default_value": 0.1 },
"layer_height_0": { "default_value": 0.15 }, "layer_height_0": { "default_value": 0.15 },
"retraction_amount": { "default_value": 0.8 }, "retraction_amount": { "default_value": 0.8 },

View File

@ -32,9 +32,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-75, -18], [-75, -18],

View File

@ -33,9 +33,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 6 "default_value": 6
}, },

View File

@ -33,9 +33,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 6 "default_value": 6
}, },

View File

@ -32,9 +32,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 6 "default_value": 6
}, },

View File

@ -32,9 +32,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_nozzle_heat_up_speed": { "machine_nozzle_heat_up_speed": {
"default_value": 6 "default_value": 6
}, },

View File

@ -69,9 +69,6 @@
"machine_depth": { "machine_depth": {
"default_value": 150 "default_value": 150
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap" "default_value": "RepRap"
}, },

View File

@ -80,9 +80,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"gantry_height": { "gantry_height": {
"default_value": 25 "default_value": 25
}, },

View File

@ -28,9 +28,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"gantry_height": { "gantry_height": {
"default_value": 0 "default_value": 0
}, },

View File

@ -26,7 +26,6 @@
"machine_height": { "default_value": 530 }, "machine_height": { "default_value": 530 },
"machine_max_feedrate_z": { "default_value": 400 }, "machine_max_feedrate_z": { "default_value": 400 },
"machine_name": { "default_value": "Artemis" }, "machine_name": { "default_value": "Artemis" },
"machine_nozzle_size": { "default_value": 0.5 },
"machine_shape": { "default_value": "elliptic" }, "machine_shape": { "default_value": "elliptic" },
"machine_width": { "default_value": 290 }, "machine_width": { "default_value": 290 },
"relative_extrusion": { "default_value": false }, "relative_extrusion": { "default_value": false },

View File

@ -26,7 +26,6 @@
"machine_height": { "default_value": 395 }, "machine_height": { "default_value": 395 },
"machine_max_feedrate_z": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 300 },
"machine_name": { "default_value": "Rostock Max V3.2" }, "machine_name": { "default_value": "Rostock Max V3.2" },
"machine_nozzle_size": { "default_value": 0.5 },
"machine_shape": { "default_value": "elliptic" }, "machine_shape": { "default_value": "elliptic" },
"machine_width": { "default_value": 265 }, "machine_width": { "default_value": 265 },
"relative_extrusion": { "default_value": false }, "relative_extrusion": { "default_value": false },

View File

@ -43,10 +43,6 @@
{ {
"default_value": false "default_value": false
}, },
"machine_nozzle_size":
{
"default_value": 0.4
},
"gantry_height": "gantry_height":
{ {
"default_value": 0 "default_value": 0

View File

@ -24,7 +24,6 @@
"machine_height": { "default_value": 200 }, "machine_height": { "default_value": 200 },
"machine_depth": { "default_value": 200 }, "machine_depth": { "default_value": 200 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_polygon": "machine_head_polygon":
{ {
"default_value": "default_value":

View File

@ -8,7 +8,10 @@
"manufacturer": "Tevo", "manufacturer": "Tevo",
"file_formats": "text/x-gcode", "file_formats": "text/x-gcode",
"icon": "icon_ultimaker2.png", "icon": "icon_ultimaker2.png",
"has_materials": true "has_materials": true,
"machine_extruder_trains": {
"0": "tevo_tornado_extruder_0"
}
}, },
"overrides": { "overrides": {
"machine_name": { "machine_name": {
@ -34,12 +37,6 @@
[30, 34] [30, 34]
] ]
}, },
"material_diameter": {
"default_value": 1.75
},
"machine_nozzle_size": {
"default_value": 0.4
},
"top_bottom_thickness": { "top_bottom_thickness": {
"default_value": 1.2 "default_value": 1.2
}, },

View File

@ -27,7 +27,6 @@
"machine_depth": { "default_value": 275 }, "machine_depth": { "default_value": 275 },
"machine_center_is_zero": { "default_value": false }, "machine_center_is_zero": { "default_value": false },
"material_bed_temperature": { "default_value": 70 }, "material_bed_temperature": { "default_value": 70 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height_0": { "default_value": 0.1 }, "layer_height_0": { "default_value": 0.1 },
"retraction_amount": { "default_value": 2 }, "retraction_amount": { "default_value": 2 },
"retraction_speed": { "default_value": 50 }, "retraction_speed": { "default_value": 50 },

View File

@ -54,10 +54,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4,
"minimum_value": "0.001"
},
"gantry_height": { "gantry_height": {
"default_value": 48 "default_value": 48
}, },

View File

@ -35,9 +35,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -37,9 +37,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": [ "default_value": [

View File

@ -11,7 +11,10 @@
"manufacturer": "TheCoolTool", "manufacturer": "TheCoolTool",
"file_formats": "text/x-ngc;text/x-gcode", "file_formats": "text/x-ngc;text/x-gcode",
"platform": "uni_print_3d_platform.stl", "platform": "uni_print_3d_platform.stl",
"platform_offset": [0, 0, 0] "platform_offset": [0, 0, 0],
"machine_extruder_trains": {
"0": "uni_print_3d_extruder_0"
}
}, },
"overrides": { "overrides": {
@ -21,8 +24,6 @@
"machine_height": { "default_value": 230 }, "machine_height": { "default_value": 230 },
"machine_depth": { "default_value": 220 }, "machine_depth": { "default_value": 220 },
"machine_center_is_zero": { "default_value": true }, "machine_center_is_zero": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_heat_up_speed": { "default_value": 2.0 }, "machine_nozzle_heat_up_speed": { "default_value": 2.0 },
"machine_nozzle_cool_down_speed": { "default_value": 2.0 }, "machine_nozzle_cool_down_speed": { "default_value": 2.0 },
"machine_head_shape_min_x": { "default_value": 75 }, "machine_head_shape_min_x": { "default_value": 75 },

View File

@ -30,9 +30,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.5
},
"gantry_height": { "gantry_height": {
"default_value": 55 "default_value": 55
}, },

View File

@ -30,9 +30,6 @@
"machine_shape": { "machine_shape": {
"default_value": "elliptic" "default_value": "elliptic"
}, },
"machine_nozzle_size": {
"default_value": 0.35
},
"machine_head_shape_min_x": { "machine_head_shape_min_x": {
"default_value": 0 "default_value": 0
}, },

View File

@ -42,9 +42,6 @@
"machine_center_is_zero": { "machine_center_is_zero": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.35
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-60, -18], [-60, -18],

View File

@ -43,9 +43,6 @@
"machine_use_extruder_offset_to_offset_coords": { "machine_use_extruder_offset_to_offset_coords": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.35
},
"machine_head_polygon": { "machine_head_polygon": {
"default_value": [ "default_value": [
[-60, -18], [-60, -18],

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_225_145_platform.obj", "platform": "wanhao_225_145_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d4s_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -33,9 +36,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_200_200_platform.obj", "platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d6_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -33,9 +36,6 @@
"machine_depth": { "machine_depth": {
"default_value": 200 "default_value": 200
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
@ -50,9 +50,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_200_200_platform.obj", "platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d6_plus_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -30,9 +33,6 @@
"machine_depth": { "machine_depth": {
"default_value": 200 "default_value": 200
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_300_200_platform.obj", "platform": "wanhao_300_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_duplicator5S_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -36,9 +39,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -47,9 +47,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 3
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_300_200_platform.obj", "platform": "wanhao_300_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_duplicator5Smini_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -33,9 +36,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 3
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_200_200_platform.obj", "platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -33,9 +36,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_110_110_platform.obj", "platform": "wanhao_110_110_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3mini_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-15, -15,
@ -33,9 +36,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": false "default_value": false
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -11,6 +11,9 @@
"has_materials": true, "has_materials": true,
"platform": "wanhao_200_200_platform.obj", "platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png", "platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3plus_extruder_0"
},
"platform_offset": [ "platform_offset": [
0, 0,
-28, -28,
@ -33,9 +36,6 @@
"machine_heated_bed": { "machine_heated_bed": {
"default_value": true "default_value": true
}, },
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)" "default_value": "RepRap (Marlin/Sprinter)"
}, },
@ -44,9 +44,6 @@
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning"
},
"material_diameter": {
"default_value": 1.75
} }
} }
} }

View File

@ -15,6 +15,7 @@
}, },
"machine_nozzle_offset_x": { "default_value": 0 }, "machine_nozzle_offset_x": { "default_value": 0 },
"machine_nozzle_offset_y": { "default_value": 0 }, "machine_nozzle_offset_y": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.35 },
"material_diameter": { "default_value": 1.75 }, "material_diameter": { "default_value": 1.75 },
"machine_extruder_start_pos_abs": { "default_value": true }, "machine_extruder_start_pos_abs": { "default_value": true },

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