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.
# Cura is released under the terms of the LGPLv3 or higher.
import io
import os
import re
import shutil
from typing import Optional
from typing import Dict, Optional
from zipfile import ZipFile, ZIP_DEFLATED, BadZipfile
from UM import i18nCatalog
@ -28,9 +29,9 @@ class Backup:
# Re-use translation catalog.
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.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.
def makeFromCurrent(self) -> None:

View File

@ -1,6 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V.
# 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 cura.Backups.Backup import Backup
@ -18,7 +19,7 @@ class BackupsManager:
## Get a back-up of the current configuration.
# \return A tuple containing a ZipFile (the actual back-up) and a dict
# 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()
backup = Backup()
backup.makeFromCurrent()
@ -30,7 +31,7 @@ class BackupsManager:
# \param zip_file A bytes object containing the actual back-up.
# \param meta_data A dict containing some metadata that is needed to
# 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 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.")
@ -43,13 +44,13 @@ class BackupsManager:
if restored:
# 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.
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
# restoring a back-up.
def _disableAutoSave(self):
def _disableAutoSave(self) -> None:
self._application.setSaveDataEnabled(False)
## Re-enable auto-save after we're done.
def _enableAutoSave(self):
def _enableAutoSave(self) -> None:
self._application.setSaveDataEnabled(True)

View File

@ -47,10 +47,10 @@ class BuildVolume(SceneNode):
self._disallowed_area_color = None
self._error_area_color = None
self._width = 0
self._height = 0
self._depth = 0
self._shape = ""
self._width = 0 #type: float
self._height = 0 #type: float
self._depth = 0 #type: float
self._shape = "" #type: str
self._shader = None
@ -154,19 +154,19 @@ class BuildVolume(SceneNode):
if active_extruder_changed is not None:
active_extruder_changed.connect(self._updateDisallowedAreasAndRebuild)
def setWidth(self, width):
def setWidth(self, width: float) -> None:
if width is not None:
self._width = width
def setHeight(self, height):
def setHeight(self, height: float) -> None:
if height is not None:
self._height = height
def setDepth(self, depth):
def setDepth(self, depth: float) -> None:
if depth is not None:
self._depth = depth
def setShape(self, shape: str):
def setShape(self, shape: str) -> None:
if shape:
self._shape = shape
@ -294,7 +294,7 @@ class BuildVolume(SceneNode):
if not self._width or not self._height or not self._depth:
return
if not self._application._qml_engine:
if not self._engine_ready:
return
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.Machines.VariantManager import VariantManager
from plugins.SliceInfoPlugin.SliceInfo import SliceInfo
from .SingleInstance import SingleInstance
from .AutoSave import AutoSave
@ -110,6 +109,10 @@ from cura.ObjectsModel import ObjectsModel
from UM.FlameProfiler import pyqtSlot
if TYPE_CHECKING:
from plugins.SliceInfoPlugin.SliceInfo import SliceInfo
numpy.seterr(all = "ignore")
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.
def startSplashWindowPhase(self):
super().startSplashWindowPhase()
@ -1518,7 +1484,9 @@ class CuraApplication(QtApplication):
@pyqtSlot("QSize")
def setMinimumWindowSize(self, size):
self.getMainWindow().setMinimumSize(size)
main_window = self.getMainWindow()
if main_window:
main_window.setMinimumSize(size)
def getBuildVolume(self):
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_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.Quality] = self._empty_quality
self._containers[_ContainerIndexes.Material] = self._empty_material

View File

@ -95,7 +95,9 @@ class SingleInstance:
elif command == "focus":
# 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.
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.
elif command == "close-connection":

View File

@ -12,14 +12,14 @@ from UM.Platform import Platform
parser = argparse.ArgumentParser(prog = "cura",
add_help = False)
parser.add_argument('--debug',
action='store_true',
parser.add_argument("--debug",
action="store_true",
default = False,
help = "Turn on the debug mode by setting this option."
)
parser.add_argument('--trigger-early-crash',
dest = 'trigger_early_crash',
action = 'store_true',
parser.add_argument("--trigger-early-crash",
dest = "trigger_early_crash",
action = "store_true",
default = False,
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
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),
# and a default_extruder_nr to use when no extruder_nr is specified
if isinstance(key, str):
try:
extruder_nr = int(kwargs["default_extruder_nr"])
except ValueError:
extruder_nr = -1
extruder_nr = int(default_extruder_nr)
key_fragments = [fragment.strip() for fragment in key.split(",")]
if len(key_fragments) == 2:
@ -57,13 +53,13 @@ class GcodeStartEndFormatter(Formatter):
extruder_nr = int(key_fragments[1])
except ValueError:
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):
# 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])
elif len(key_fragments) != 1:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key)
return "{" + str(key) + "}"
return "{" + key + "}"
key = key_fragments[0]
try:
@ -71,9 +67,6 @@ class GcodeStartEndFormatter(Formatter):
except KeyError:
Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", 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.

View File

@ -286,6 +286,9 @@ class FlavorParser:
self._cancelled = False
# We obtain the filament diameter from the selected extruder to calculate line widths
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")
scene_node = CuraSceneNode()

View File

@ -104,9 +104,12 @@ class Script:
m = re.search('^-?[0-9]+\.?[0-9]*', sub_part)
if m is None:
return default
try:
return int(m.group(0))
except ValueError: #Not an integer.
try:
return float(m.group(0))
except:
except ValueError: #Not a number at all.
return default
## 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 cura.Settings.ExtruderManager import ExtruderManager
from UM.Application import Application #To get the current printer's settings.
class PauseAtHeight(Script):
def __init__(self):
@ -136,6 +140,10 @@ class PauseAtHeight(Script):
layers_started = False
redo_layers = self.getSettingValueByKey("redo_layers")
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")
@ -153,6 +161,8 @@ class PauseAtHeight(Script):
# Scroll each line of instruction for each layer in the G-code
for line in lines:
if ";FLAVOR:Griffin" in line:
is_griffin = True
# Fist positive layer reached
if ";LAYER:0" in line:
layers_started = True
@ -162,12 +172,12 @@ class PauseAtHeight(Script):
#Track the latest printing temperature in order to resume at the correct temperature.
if line.startswith("T"):
current_t = int(self.getValue(line, "T"))
current_t = self.getValue(line, "T")
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
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")
if not layers_started:
@ -247,57 +257,67 @@ class PauseAtHeight(Script):
prepend_gcode += ";added code by post processing\n"
prepend_gcode += ";script: PauseAtHeight.py\n"
if pause_at == "height":
prepend_gcode += ";current z: {z}\n".format(z=current_z)
prepend_gcode += ";current height: {height}\n".format(height=current_height)
prepend_gcode += ";current z: {z}\n".format(z = current_z)
prepend_gcode += ";current height: {height}\n".format(height = current_height)
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
prepend_gcode += self.putValue(M=83) + "\n"
prepend_gcode += self.putValue(M = 83) + "\n"
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
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
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:
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
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
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
prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n"
# Push the filament back,
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
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
# when changing filament.
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
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, Z = current_z + 1, F = 300) + "\n"
prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n"
if retraction_amount != 0:
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"
if firmware_retract:
prepend_gcode += self.putValue(G = 11)
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
prepend_gcode += self.putValue(G=92, E=current_e) + "\n"
prepend_gcode += self.putValue(G = 92, E = current_e) + "\n"
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
{
role: "machine"
title: "Machine"
width: Math.floor(table.width * 0.25)
delegate: columnTextDelegate
}
TableViewColumn
{

View File

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

View File

@ -1,7 +1,7 @@
// Copyright (c) 2018 Ultimaker B.V.
// 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.Styles 1.4
import QtQuick.Layouts 1.3
@ -9,10 +9,10 @@ import UM 1.1 as UM
Column
{
height: childrenRect.height
height: childrenRect.height + 2 * padding
width: parent.width
spacing: UM.Theme.getSize("default_margin").height
padding: UM.Theme.getSize("wide_margin").height
Label
{
id: heading
@ -25,7 +25,7 @@ Column
{
id: grid
property var model: toolbox.viewCategory == "material" ? toolbox.authorsModel : toolbox.packagesModel
width: parent.width
width: parent.width - 2 * parent.padding
columns: 2
columnSpacing: UM.Theme.getSize("default_margin").height
rowSpacing: UM.Theme.getSize("default_margin").width

View File

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

View File

@ -1,16 +1,22 @@
// Copyright (c) 2018 Ultimaker B.V.
// 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.Styles 1.4
import UM 1.1 as UM
Column
Rectangle
{
color: UM.Theme.getColor("secondary")
height: childrenRect.height
width: parent.width
Column
{
height: childrenRect.height + 2 * padding
spacing: UM.Theme.getSize("toolbox_showcase_spacing").width
width: parent.width
padding: UM.Theme.getSize("wide_margin").height
Label
{
id: heading
@ -43,4 +49,5 @@ Column
delegate: ToolboxDownloadsShowcaseTile {}
}
}
}
}

View File

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

View File

@ -15,6 +15,7 @@ Item
Label
{
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)
verticalAlignment: Text.AlignVCenter
anchors
@ -25,6 +26,7 @@ Item
right: restartButton.right
rightMargin: UM.Theme.getSize("default_margin").width
}
}
Button
{

View File

@ -234,6 +234,11 @@ class Toolbox(QObject, Extension):
if not self._dialog:
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()
# Apply enabled/disabled state to installed plugins
@ -241,7 +246,10 @@ class Toolbox(QObject, Extension):
def _createDialog(self, qml_name: str) -> Optional[QObject]:
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})
return dialog

View File

@ -103,8 +103,12 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
else:
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.
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]
#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"):
@ -125,6 +129,10 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
else:
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.
self._sending_job = self._sendPrintJob(writer, preferred_format, nodes)
self._sending_job.send(None) #Start the generator.
@ -205,6 +213,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
yield #To prevent having to catch the StopIteration exception.
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._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()
def _onPostPrintJobFinished(self, reply: QNetworkReply) -> None:
if self._progress_message is not None:
self._progress_message.hide()
self._compressing_gcode = False
self._sending_gcode = False

View File

@ -170,7 +170,10 @@ class DiscoverUM3Action(MachineAction):
Logger.log("d", "Creating additional ui components for UM3.")
# 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})
if not self.__additional_components_view:
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.
class SendMaterialJob(Job):
def __init__(self, device: "ClusterUM3OutputDevice"):
def __init__(self, device: "ClusterUM3OutputDevice") -> None:
super().__init__()
self.device = device #type: ClusterUM3OutputDevice

View File

@ -6,6 +6,7 @@ import io
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
# state they should be in at version 4.0.
@ -68,6 +69,9 @@ class VersionUpgrade34to40(VersionUpgrade):
parser["metadata"]["setting_version"] = "5"
self._resetConcentric3DInfillPattern(parser)
if "values" in parser:
for deleted_setting in deleted_settings:
del parser["values"][deleted_setting]
result = io.StringIO()
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.
from math import pi, sin, cos, sqrt
from typing import Dict
import numpy
@ -42,7 +43,7 @@ class X3DReader(MeshReader):
def __init__(self) -> None:
super().__init__()
self._supported_extensions = [".x3d"]
self._namespaces = {}
self._namespaces = {} # type: Dict[str, str]
# Main entry point
# 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_height": { "default_value": 99.822 },
"machine_center_is_zero": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_head_with_fans_polygon": {
"default_value": [
[ 0, 0 ],

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -44,7 +44,7 @@
"material_print_temp_wait": { "default_value": false },
"material_bed_temp_wait": { "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_position_x": { "value": 125 },
"prime_tower_position_y": { "value": 70 },

View File

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

View File

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

View File

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

View File

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

View File

@ -23,7 +23,6 @@
"machine_height": { "default_value": 250 },
"machine_depth": { "default_value": 190 },
"machine_center_is_zero": { "default_value": true },
"machine_nozzle_size": { "default_value": 0.4 },
"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_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": {
"default_value": 1
},
"machine_nozzle_size": {
"default_value": 0.4
},
"speed_print": {
"default_value": 75
},

View File

@ -35,7 +35,6 @@
"machine_depth": { "default_value": 234 },
"machine_center_is_zero": { "default_value": false },
"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_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"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":
{
"label": "Use Towers",
@ -4992,32 +5013,12 @@
"description": "The minimum volume for each layer of the prime tower in order to purge enough material.",
"unit": "mm³",
"type": "float",
"default_value": 10,
"value": "8.48 if prime_tower_circular else 10",
"default_value": 5,
"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')",
"settable_per_mesh": false,
"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
}
}
"settable_per_extruder": true
},
"prime_tower_position_x":
{
@ -5072,29 +5073,6 @@
"settable_per_mesh": false,
"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":
{
"label": "Enable Ooze Shield",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -60,10 +60,6 @@
"machine_height": { "default_value": 120 },
"machine_heated_bed": { "default_value": true },
"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_y": { "default_value": 150 },
"machine_max_feedrate_z": { "default_value": 1.5 },

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,7 +11,10 @@
"manufacturer": "TheCoolTool",
"file_formats": "text/x-ngc;text/x-gcode",
"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": {
@ -21,8 +24,6 @@
"machine_height": { "default_value": 230 },
"machine_depth": { "default_value": 220 },
"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_cool_down_speed": { "default_value": 2.0 },
"machine_head_shape_min_x": { "default_value": 75 },

View File

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

View File

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

View File

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

View File

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

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_225_145_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d4s_extruder_0"
},
"platform_offset": [
0,
-28,
@ -33,9 +36,6 @@
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d6_extruder_0"
},
"platform_offset": [
0,
-28,
@ -33,9 +36,6 @@
"machine_depth": {
"default_value": 200
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_heated_bed": {
"default_value": true
},
@ -50,9 +50,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_d6_plus_extruder_0"
},
"platform_offset": [
0,
-28,
@ -30,9 +33,6 @@
"machine_depth": {
"default_value": 200
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_heated_bed": {
"default_value": true
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_300_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_duplicator5S_extruder_0"
},
"platform_offset": [
0,
-28,
@ -36,9 +39,6 @@
"machine_heated_bed": {
"default_value": false
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -47,9 +47,6 @@
},
"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"
},
"material_diameter": {
"default_value": 3
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_300_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_duplicator5Smini_extruder_0"
},
"platform_offset": [
0,
-28,
@ -33,9 +36,6 @@
"machine_heated_bed": {
"default_value": false
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 3
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3_extruder_0"
},
"platform_offset": [
0,
-28,
@ -33,9 +36,6 @@
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_110_110_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3mini_extruder_0"
},
"platform_offset": [
0,
-15,
@ -33,9 +36,6 @@
"machine_heated_bed": {
"default_value": false
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

@ -11,6 +11,9 @@
"has_materials": true,
"platform": "wanhao_200_200_platform.obj",
"platform_texture": "Wanhaobackplate.png",
"machine_extruder_trains": {
"0": "wanhao_i3plus_extruder_0"
},
"platform_offset": [
0,
-28,
@ -33,9 +36,6 @@
"machine_heated_bed": {
"default_value": true
},
"machine_nozzle_size": {
"default_value": 0.4
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
@ -44,9 +44,6 @@
},
"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"
},
"material_diameter": {
"default_value": 1.75
}
}
}

View File

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

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