Merge branch 'master' into CURA-5595_add_custom_button_to_menu

This commit is contained in:
Aleksei S 2018-08-10 15:51:38 +02:00
commit a1bc2f3ebf
89 changed files with 1210 additions and 436 deletions

View file

@ -4,15 +4,20 @@ from PyQt5.QtCore import QSize
from UM.Application import Application from UM.Application import Application
class CameraImageProvider(QQuickImageProvider): class CameraImageProvider(QQuickImageProvider):
def __init__(self): def __init__(self):
QQuickImageProvider.__init__(self, QQuickImageProvider.Image) super().__init__(QQuickImageProvider.Image)
## Request a new image. ## Request a new image.
def requestImage(self, id, size): def requestImage(self, id, size):
for output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices(): for output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices():
try: try:
return output_device.activePrinter.camera.getImage(), QSize(15, 15) image = output_device.activePrinter.camera.getImage()
if image.isNull():
image = QImage()
return image, QSize(15, 15)
except AttributeError: except AttributeError:
pass pass
return QImage(), QSize(15, 15) return QImage(), QSize(15, 15)

View file

@ -229,6 +229,8 @@ class CuraApplication(QtApplication):
self._sidebar_custom_menu_items = [] # type: list # Keeps list of custom menu items for the side bar self._sidebar_custom_menu_items = [] # type: list # Keeps list of custom menu items for the side bar
self._plugins_loaded = False
# Backups # Backups
self._auto_save = None self._auto_save = None
self._save_data_enabled = True self._save_data_enabled = True
@ -1609,8 +1611,7 @@ class CuraApplication(QtApplication):
self._currently_loading_files.remove(file_name) self._currently_loading_files.remove(file_name)
self.fileLoaded.emit(file_name) self.fileLoaded.emit(file_name)
arrange_objects_on_load = not self.getPreferences().getValue("cura/use_multi_build_plate") target_build_plate = self.getMultiBuildPlateModel().activeBuildPlate
target_build_plate = self.getMultiBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1
root = self.getController().getScene().getRoot() root = self.getController().getScene().getRoot()
fixed_nodes = [] fixed_nodes = []
@ -1664,7 +1665,7 @@ class CuraApplication(QtApplication):
if not child.getDecorator(ConvexHullDecorator): if not child.getDecorator(ConvexHullDecorator):
child.addDecorator(ConvexHullDecorator()) child.addDecorator(ConvexHullDecorator())
if file_extension != "3mf" and arrange_objects_on_load: if file_extension != "3mf":
if node.callDecoration("isSliceable"): if node.callDecoration("isSliceable"):
# Only check position if it's not already blatantly obvious that it won't fit. # Only check position if it's not already blatantly obvious that it won't fit.
if node.getBoundingBox() is None or self._volume.getBoundingBox() is None or node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: if node.getBoundingBox() is None or self._volume.getBoundingBox() is None or node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth:

View file

@ -267,6 +267,7 @@ class PrintInformation(QObject):
new_active_build_plate = self._multi_build_plate_model.activeBuildPlate new_active_build_plate = self._multi_build_plate_model.activeBuildPlate
if new_active_build_plate != self._active_build_plate: if new_active_build_plate != self._active_build_plate:
self._active_build_plate = new_active_build_plate self._active_build_plate = new_active_build_plate
self._updateJobName()
self._initVariablesWithBuildPlate(self._active_build_plate) self._initVariablesWithBuildPlate(self._active_build_plate)
@ -320,6 +321,15 @@ class PrintInformation(QObject):
else: else:
self._job_name = base_name self._job_name = base_name
# In case there are several buildplates, a suffix is attached
if self._multi_build_plate_model.maxBuildPlate > 0:
connector = "_#"
suffix = connector + str(self._active_build_plate + 1)
if connector in self._job_name:
self._job_name = self._job_name.split(connector)[0] # get the real name
if self._active_build_plate != 0:
self._job_name += suffix
self.jobNameChanged.emit() self.jobNameChanged.emit()
@pyqtSlot(str) @pyqtSlot(str)

View file

@ -120,7 +120,7 @@ class PrinterOutputModel(QObject):
@pyqtProperty(QVariant, notify = headPositionChanged) @pyqtProperty(QVariant, notify = headPositionChanged)
def headPosition(self): def headPosition(self):
return {"x": self._head_position.x, "y": self._head_position.y, "z": self.head_position_z} return {"x": self._head_position.x, "y": self._head_position.y, "z": self.head_position.z}
def updateHeadPosition(self, x, y, z): def updateHeadPosition(self, x, y, z):
if self._head_position.x != x or self._head_position.y != y or self._head_position.z != z: if self._head_position.x != x or self._head_position.y != y or self._head_position.z != z:

View file

@ -1455,9 +1455,14 @@ class MachineManager(QObject):
if quality_group.node_for_global is None: if quality_group.node_for_global is None:
Logger.log("e", "Could not set quality group [%s] because it has no node_for_global", str(quality_group)) Logger.log("e", "Could not set quality group [%s] because it has no node_for_global", str(quality_group))
return return
# This is not changing the quality for the active machine !!!!!!!!
global_stack.quality = quality_group.node_for_global.getContainer() global_stack.quality = quality_group.node_for_global.getContainer()
for extruder_nr, extruder_stack in global_stack.extruders.items(): for extruder_nr, extruder_stack in global_stack.extruders.items():
extruder_stack.quality = quality_group.nodes_for_extruders[extruder_nr].getContainer() quality_container = self._empty_quality_container
if extruder_nr in quality_group.nodes_for_extruders:
container = quality_group.nodes_for_extruders[extruder_nr].getContainer()
quality_container = container if container is not None else quality_container
extruder_stack.quality = quality_container
return return
self.blurSettings.emit() self.blurSettings.emit()

View file

@ -131,6 +131,7 @@ faulthandler.enable(all_threads = True)
# first seems to prevent Sip from going into a state where it # first seems to prevent Sip from going into a state where it
# tries to create PyQt objects on a non-main thread. # tries to create PyQt objects on a non-main thread.
import Arcus #@UnusedImport import Arcus #@UnusedImport
import Savitar #@UnusedImport
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
app = CuraApplication() app = CuraApplication()

View file

@ -25,6 +25,9 @@ except ImportError:
import zipfile import zipfile
import UM.Application import UM.Application
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
class ThreeMFWriter(MeshWriter): class ThreeMFWriter(MeshWriter):
def __init__(self): def __init__(self):
@ -173,6 +176,7 @@ class ThreeMFWriter(MeshWriter):
archive.writestr(relations_file, b'<?xml version="1.0" encoding="UTF-8"?> \n' + ET.tostring(relations_element)) archive.writestr(relations_file, b'<?xml version="1.0" encoding="UTF-8"?> \n' + ET.tostring(relations_element))
except Exception as e: except Exception as e:
Logger.logException("e", "Error writing zip file") Logger.logException("e", "Error writing zip file")
self.setInformation(catalog.i18nc("@error:zip", "Error writing 3mf file."))
return False return False
finally: finally:
if not self._store_archive: if not self._store_archive:

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.
import argparse #To run the engine in debug mode if the front-end is in debug mode.
from collections import defaultdict from collections import defaultdict
import os import os
from PyQt5.QtCore import QObject, QTimer, pyqtSlot from PyQt5.QtCore import QObject, QTimer, pyqtSlot
@ -179,7 +180,15 @@ class CuraEngineBackend(QObject, Backend):
# \return list of commands and args / parameters. # \return list of commands and args / parameters.
def getEngineCommand(self) -> List[str]: def getEngineCommand(self) -> List[str]:
json_path = Resources.getPath(Resources.DefinitionContainers, "fdmprinter.def.json") json_path = Resources.getPath(Resources.DefinitionContainers, "fdmprinter.def.json")
return [self._application.getPreferences().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), "-j", json_path, ""] command = [self._application.getPreferences().getValue("backend/location"), "connect", "127.0.0.1:{0}".format(self._port), "-j", json_path, ""]
parser = argparse.ArgumentParser(prog = "cura", add_help = False)
parser.add_argument("--debug", action = "store_true", default = False, help = "Turn on the debug mode by setting this option.")
known_args = vars(parser.parse_known_args()[0])
if known_args["debug"]:
command.append("-vvv")
return command
## Emitted when we get a message containing print duration and material amount. ## Emitted when we get a message containing print duration and material amount.
# This also implies the slicing has finished. # This also implies the slicing has finished.
@ -541,6 +550,9 @@ class CuraEngineBackend(QObject, Backend):
## Remove old layer data (if any) ## Remove old layer data (if any)
def _clearLayerData(self, build_plate_numbers: Set = None) -> None: def _clearLayerData(self, build_plate_numbers: Set = None) -> None:
# Clear out any old gcode
self._scene.gcode_dict = {} # type: ignore
for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax.
if node.callDecoration("getLayerData"): if node.callDecoration("getLayerData"):
if not build_plate_numbers or node.callDecoration("getBuildPlateNumber") in build_plate_numbers: if not build_plate_numbers or node.callDecoration("getBuildPlateNumber") in build_plate_numbers:

View file

@ -41,7 +41,7 @@ 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, default_extruder_nr: str = "-1", **kwargs) -> str: #type: ignore # [CodeStyle: get_value is an overridden function from the Formatter class] def get_value(self, key: str, args: str, kwargs: dict, default_extruder_nr: str = "-1") -> 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

View file

@ -10,6 +10,9 @@ from UM.Mesh.MeshWriter import MeshWriter #The class we're extending/implementin
from UM.PluginRegistry import PluginRegistry from UM.PluginRegistry import PluginRegistry
from UM.Scene.SceneNode import SceneNode #For typing. from UM.Scene.SceneNode import SceneNode #For typing.
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
## A file writer that writes gzipped g-code. ## A file writer that writes gzipped g-code.
# #
# If you're zipping g-code, you might as well use gzip! # If you're zipping g-code, you might as well use gzip!
@ -28,12 +31,15 @@ class GCodeGzWriter(MeshWriter):
def write(self, stream: BufferedIOBase, nodes: List[SceneNode], mode = MeshWriter.OutputMode.BinaryMode) -> bool: def write(self, stream: BufferedIOBase, nodes: List[SceneNode], mode = MeshWriter.OutputMode.BinaryMode) -> bool:
if mode != MeshWriter.OutputMode.BinaryMode: if mode != MeshWriter.OutputMode.BinaryMode:
Logger.log("e", "GCodeGzWriter does not support text mode.") Logger.log("e", "GCodeGzWriter does not support text mode.")
self.setInformation(catalog.i18nc("@error:not supported", "GCodeGzWriter does not support text mode."))
return False return False
#Get the g-code from the g-code writer. #Get the g-code from the g-code writer.
gcode_textio = StringIO() #We have to convert the g-code into bytes. gcode_textio = StringIO() #We have to convert the g-code into bytes.
success = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter")).write(gcode_textio, None) gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter"))
success = gcode_writer.write(gcode_textio, None)
if not success: #Writing the g-code failed. Then I can also not write the gzipped g-code. if not success: #Writing the g-code failed. Then I can also not write the gzipped g-code.
self.setInformation(gcode_writer.getInformation())
return False return False
result = gzip.compress(gcode_textio.getvalue().encode("utf-8")) result = gzip.compress(gcode_textio.getvalue().encode("utf-8"))

View file

@ -12,6 +12,8 @@ from UM.Settings.InstanceContainer import InstanceContainer
from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
## Writes g-code to a file. ## Writes g-code to a file.
# #
@ -62,11 +64,13 @@ class GCodeWriter(MeshWriter):
def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode): def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode):
if mode != MeshWriter.OutputMode.TextMode: if mode != MeshWriter.OutputMode.TextMode:
Logger.log("e", "GCodeWriter does not support non-text mode.") Logger.log("e", "GCodeWriter does not support non-text mode.")
self.setInformation(catalog.i18nc("@error:not supported", "GCodeWriter does not support non-text mode."))
return False return False
active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate
scene = Application.getInstance().getController().getScene() scene = Application.getInstance().getController().getScene()
if not hasattr(scene, "gcode_dict"): if not hasattr(scene, "gcode_dict"):
self.setInformation(catalog.i18nc("@warning:status", "Please generate G-code before saving."))
return False return False
gcode_dict = getattr(scene, "gcode_dict") gcode_dict = getattr(scene, "gcode_dict")
gcode_list = gcode_dict.get(active_build_plate, None) gcode_list = gcode_dict.get(active_build_plate, None)
@ -82,6 +86,7 @@ class GCodeWriter(MeshWriter):
stream.write(settings) stream.write(settings)
return True return True
self.setInformation(catalog.i18nc("@warning:status", "Please generate G-code before saving."))
return False return False
## Create a new container with container 2 as base and container 1 written over it. ## Create a new container with container 2 as base and container 1 written over it.

View file

@ -62,13 +62,12 @@ class GCodeStep():
delta_step_y = _getValue(line, "Y", 0) delta_step_y = _getValue(line, "Y", 0)
delta_step_z = _getValue(line, "Z", 0) delta_step_z = _getValue(line, "Z", 0)
delta_step_e = _getValue(line, "E", 0) delta_step_e = _getValue(line, "E", 0)
delta_step_f = _getValue(line, "F", 0)
self.step_x += delta_step_x self.step_x += delta_step_x
self.step_y += delta_step_y self.step_y += delta_step_y
self.step_z += delta_step_z self.step_z += delta_step_z
self.step_e += delta_step_e self.step_e += delta_step_e
self.step_f += delta_step_f self.step_f = _getValue(line, "F", self.step_f) # the feedrate is not relative
def copyPosFrom(self, step): def copyPosFrom(self, step):
""" """

View file

@ -40,33 +40,37 @@ Item {
property bool layersVisible: true property bool layersVisible: true
function getUpperValueFromSliderHandle () { function getUpperValueFromSliderHandle() {
return upperHandle.getValue() return upperHandle.getValue()
} }
function setUpperValue (value) { function setUpperValue(value) {
upperHandle.setValue(value) upperHandle.setValue(value)
updateRangeHandle() updateRangeHandle()
} }
function getLowerValueFromSliderHandle () { function getLowerValueFromSliderHandle() {
return lowerHandle.getValue() return lowerHandle.getValue()
} }
function setLowerValue (value) { function setLowerValue(value) {
lowerHandle.setValue(value) lowerHandle.setValue(value)
updateRangeHandle() updateRangeHandle()
} }
function updateRangeHandle () { function updateRangeHandle() {
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height) rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height)
} }
// set the active handle to show only one label at a time // set the active handle to show only one label at a time
function setActiveHandle (handle) { function setActiveHandle(handle) {
activeHandle = handle activeHandle = handle
} }
function normalizeValue(value) {
return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue)
}
// slider track // slider track
Rectangle { Rectangle {
id: track id: track
@ -188,6 +192,8 @@ Item {
// set the slider position based on the upper value // set the slider position based on the upper value
function setValue (value) { function setValue (value) {
// Normalize values between range, since using arrow keys will create out-of-the-range values
value = sliderRoot.normalizeValue(value)
UM.SimulationView.setCurrentLayer(value) UM.SimulationView.setCurrentLayer(value)
@ -274,6 +280,8 @@ Item {
// set the slider position based on the lower value // set the slider position based on the lower value
function setValue (value) { function setValue (value) {
// Normalize values between range, since using arrow keys will create out-of-the-range values
value = sliderRoot.normalizeValue(value)
UM.SimulationView.setMinimumLayer(value) UM.SimulationView.setMinimumLayer(value)

View file

@ -29,6 +29,7 @@ Item {
// value properties // value properties
property real maximumValue: 100 property real maximumValue: 100
property real minimumValue: 0
property bool roundValues: true property bool roundValues: true
property real handleValue: maximumValue property real handleValue: maximumValue
@ -47,6 +48,10 @@ Item {
rangeHandle.width = handle.x - sliderRoot.handleSize rangeHandle.width = handle.x - sliderRoot.handleSize
} }
function normalizeValue(value) {
return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue)
}
// slider track // slider track
Rectangle { Rectangle {
id: track id: track
@ -110,6 +115,8 @@ Item {
// set the slider position based on the value // set the slider position based on the value
function setValue (value) { function setValue (value) {
// Normalize values between range, since using arrow keys will create out-of-the-range values
value = sliderRoot.normalizeValue(value)
UM.SimulationView.setCurrentPath(value) UM.SimulationView.setCurrentPath(value)

View file

@ -25,10 +25,6 @@ UM.PointingRectangle {
width: valueLabel.width + UM.Theme.getSize("default_margin").width width: valueLabel.width + UM.Theme.getSize("default_margin").width
visible: false visible: false
// make sure the text field is focussed when pressing the parent handle
// needed to connect the key bindings when switching active handle
onVisibleChanged: if (visible) valueLabel.forceActiveFocus()
color: UM.Theme.getColor("tool_panel_background") color: UM.Theme.getColor("tool_panel_background")
borderColor: UM.Theme.getColor("lining") borderColor: UM.Theme.getColor("lining")
borderWidth: UM.Theme.getSize("default_lining").width borderWidth: UM.Theme.getSize("default_lining").width

View file

@ -28,7 +28,7 @@ from UM.Settings.SettingInstance import SettingInstance
class SupportEraser(Tool): class SupportEraser(Tool):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self._shortcut_key = Qt.Key_G self._shortcut_key = Qt.Key_E
self._controller = self.getController() self._controller = self.getController()
self._selection_pass = None self._selection_pass = None

View file

@ -29,6 +29,16 @@ Item
anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.topMargin: UM.Theme.getSize("default_margin").height
width: parent.width width: parent.width
frameVisible: false frameVisible: false
// Workaround for scroll issues (QTBUG-49652)
flickableItem.interactive: false
Component.onCompleted:
{
for (var i = 0; i < flickableItem.children.length; ++i)
{
flickableItem.children[i].enabled = false
}
}
selectionMode: 0 selectionMode: 0
model: packageData.supported_configs model: packageData.supported_configs
headerDelegate: Rectangle headerDelegate: Rectangle

View file

@ -114,7 +114,10 @@ Item
else else
{ {
toolbox.viewPage = "author" toolbox.viewPage = "author"
toolbox.filterModelByProp("packages", "author_id", model.id) toolbox.setFilters("packages", {
"author_id": model.id,
"type": "material"
})
} }
break break
default: default:

View file

@ -105,8 +105,21 @@ Rectangle
switch(toolbox.viewCategory) switch(toolbox.viewCategory)
{ {
case "material": case "material":
toolbox.viewPage = "author"
toolbox.filterModelByProp("packages", "author_name", model.name) // If model has a type, it must be a package
if (model.type !== undefined)
{
toolbox.viewPage = "detail"
toolbox.filterModelByProp("packages", "id", model.id)
}
else
{
toolbox.viewPage = "author"
toolbox.setFilters("packages", {
"author_id": model.id,
"type": "material"
})
}
break break
default: default:
toolbox.viewPage = "detail" toolbox.viewPage = "detail"

View file

@ -28,7 +28,7 @@ class PackagesModel(ListModel):
self.addRoleName(Qt.UserRole + 11, "download_url") self.addRoleName(Qt.UserRole + 11, "download_url")
self.addRoleName(Qt.UserRole + 12, "last_updated") self.addRoleName(Qt.UserRole + 12, "last_updated")
self.addRoleName(Qt.UserRole + 13, "is_bundled") self.addRoleName(Qt.UserRole + 13, "is_bundled")
self.addRoleName(Qt.UserRole + 14, "is_enabled") self.addRoleName(Qt.UserRole + 14, "is_active")
self.addRoleName(Qt.UserRole + 15, "is_installed") # Scheduled pkgs are included in the model but should not be marked as actually installed self.addRoleName(Qt.UserRole + 15, "is_installed") # Scheduled pkgs are included in the model but should not be marked as actually installed
self.addRoleName(Qt.UserRole + 16, "has_configs") self.addRoleName(Qt.UserRole + 16, "has_configs")
self.addRoleName(Qt.UserRole + 17, "supported_configs") self.addRoleName(Qt.UserRole + 17, "supported_configs")
@ -75,7 +75,7 @@ class PackagesModel(ListModel):
"download_url": package["download_url"] if "download_url" in package else None, "download_url": package["download_url"] if "download_url" in package else None,
"last_updated": package["last_updated"] if "last_updated" in package else None, "last_updated": package["last_updated"] if "last_updated" in package else None,
"is_bundled": package["is_bundled"] if "is_bundled" in package else False, "is_bundled": package["is_bundled"] if "is_bundled" in package else False,
"is_enabled": package["is_enabled"] if "is_enabled" in package else False, "is_active": package["is_active"] if "is_active" in package else False,
"is_installed": package["is_installed"] if "is_installed" in package else False, "is_installed": package["is_installed"] if "is_installed" in package else False,
"has_configs": has_configs, "has_configs": has_configs,
"supported_configs": configs_model, "supported_configs": configs_model,

View file

@ -776,17 +776,25 @@ class Toolbox(QObject, Extension):
# Filter Models: # Filter Models:
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@pyqtSlot(str, str, str) @pyqtSlot(str, str, str)
def filterModelByProp(self, modelType: str, filterType: str, parameter: str): def filterModelByProp(self, model_type: str, filter_type: str, parameter: str) -> None:
if not self._models[modelType]: if not self._models[model_type]:
Logger.log("w", "Toolbox: Couldn't filter %s model because it doesn't exist.", modelType) Logger.log("w", "Toolbox: Couldn't filter %s model because it doesn't exist.", model_type)
return return
self._models[modelType].setFilter({ filterType: parameter }) self._models[model_type].setFilter({filter_type: parameter})
self.filterChanged.emit() self.filterChanged.emit()
@pyqtSlot() @pyqtSlot(str, "QVariantMap")
def removeFilters(self, modelType: str): def setFilters(self, model_type: str, filter_dict: dict) -> None:
if not self._models[modelType]: if not self._models[model_type]:
Logger.log("w", "Toolbox: Couldn't remove filters on %s model because it doesn't exist.", modelType) Logger.log("w", "Toolbox: Couldn't filter %s model because it doesn't exist.", model_type)
return return
self._models[modelType].setFilter({}) self._models[model_type].setFilter(filter_dict)
self.filterChanged.emit()
@pyqtSlot(str)
def removeFilters(self, model_type: str) -> None:
if not self._models[model_type]:
Logger.log("w", "Toolbox: Couldn't remove filters on %s model because it doesn't exist.", model_type)
return
self._models[model_type].setFilter({})
self.filterChanged.emit() self.filterChanged.emit()

View file

@ -1,5 +1,6 @@
#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 cast
from Charon.VirtualFile import VirtualFile #To open UFP files. from Charon.VirtualFile import VirtualFile #To open UFP files.
from Charon.OpenMode import OpenMode #To indicate that we want to write to UFP files. from Charon.OpenMode import OpenMode #To indicate that we want to write to UFP files.
@ -13,6 +14,9 @@ from PyQt5.QtCore import QBuffer
from cura.Snapshot import Snapshot from cura.Snapshot import Snapshot
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
class UFPWriter(MeshWriter): class UFPWriter(MeshWriter):
def __init__(self): def __init__(self):
@ -32,7 +36,11 @@ class UFPWriter(MeshWriter):
#Store the g-code from the scene. #Store the g-code from the scene.
archive.addContentType(extension = "gcode", mime_type = "text/x-gcode") archive.addContentType(extension = "gcode", mime_type = "text/x-gcode")
gcode_textio = StringIO() #We have to convert the g-code into bytes. gcode_textio = StringIO() #We have to convert the g-code into bytes.
PluginRegistry.getInstance().getPluginObject("GCodeWriter").write(gcode_textio, None) gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter"))
success = gcode_writer.write(gcode_textio, None)
if not success: #Writing the g-code failed. Then I can also not write the gzipped g-code.
self.setInformation(gcode_writer.getInformation())
return False
gcode = archive.getStream("/3D/model.gcode") gcode = archive.getStream("/3D/model.gcode")
gcode.write(gcode_textio.getvalue().encode("UTF-8")) gcode.write(gcode_textio.getvalue().encode("UTF-8"))
archive.addRelation(virtual_path = "/3D/model.gcode", relation_type = "http://schemas.ultimaker.org/package/2018/relationships/gcode") archive.addRelation(virtual_path = "/3D/model.gcode", relation_type = "http://schemas.ultimaker.org/package/2018/relationships/gcode")

View file

@ -30,7 +30,12 @@ Component
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.top: parent.top anchors.top: parent.top
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.right:parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
text: Cura.MachineManager.printerOutputDevices[0].name text: Cura.MachineManager.printerOutputDevices[0].name
elide: Text.ElideRight
} }
Rectangle Rectangle

View file

@ -9,6 +9,7 @@ Component
{ {
Rectangle Rectangle
{ {
id: monitorFrame
width: maximumWidth width: maximumWidth
height: maximumHeight height: maximumHeight
color: UM.Theme.getColor("viewport_background") color: UM.Theme.getColor("viewport_background")
@ -103,5 +104,15 @@ Component
visible: OutputDevice.activePrinter != null visible: OutputDevice.activePrinter != null
anchors.fill:parent anchors.fill:parent
} }
onVisibleChanged:
{
if (!monitorFrame.visible)
{
// After switching the Tab ensure that active printer is Null, the video stream image
// might be active
OutputDevice.setActivePrinter(null)
}
}
} }
} }

View file

@ -299,11 +299,11 @@ Cura.MachineAction
} }
else if (base.selectedDevice.clusterSize === 0) else if (base.selectedDevice.clusterSize === 0)
{ {
return catalog.i18nc("@label", "This printer is not set up to host a group of Ultimaker 3 printers."); return catalog.i18nc("@label", "This printer is not set up to host a group of printers.");
} }
else else
{ {
return catalog.i18nc("@label", "This printer is the host for a group of %1 Ultimaker 3 printers.".arg(base.selectedDevice.clusterSize)); return catalog.i18nc("@label", "This printer is the host for a group of %1 printers.".arg(base.selectedDevice.clusterSize));
} }
} }
@ -349,11 +349,6 @@ Cura.MachineAction
addressField.focus = true; addressField.focus = true;
} }
onAccepted:
{
manager.setManualDevice(printerKey, addressText)
}
Column { Column {
anchors.fill: parent anchors.fill: parent
spacing: UM.Theme.getSize("default_margin").height spacing: UM.Theme.getSize("default_margin").height
@ -393,7 +388,7 @@ Cura.MachineAction
text: catalog.i18nc("@action:button", "OK") text: catalog.i18nc("@action:button", "OK")
onClicked: onClicked:
{ {
manualPrinterDialog.accept() manager.setManualDevice(manualPrinterDialog.printerKey, manualPrinterDialog.addressText)
manualPrinterDialog.hide() manualPrinterDialog.hide()
} }
enabled: manualPrinterDialog.addressText.trim() != "" enabled: manualPrinterDialog.addressText.trim() != ""

View file

@ -89,9 +89,11 @@ Item
MouseArea MouseArea
{ {
anchors.fill: cameraImage anchors.fill: cameraImage
onClicked: { /* no-op */ } onClicked:
z: 1 {
OutputDevice.setActivePrinter(null)
}
z: 1
} }
} }

View file

@ -39,12 +39,12 @@ class SendMaterialJob(Job):
try: try:
remote_materials_list = json.loads(remote_materials_list) remote_materials_list = json.loads(remote_materials_list)
except json.JSONDecodeError: except json.JSONDecodeError:
Logger.log("e", "Current material storage on printer was a corrupted reply.") Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.")
return return
try: try:
remote_materials_by_guid = {material["guid"]: material for material in remote_materials_list} #Index by GUID. remote_materials_by_guid = {material["guid"]: material for material in remote_materials_list} #Index by GUID.
except KeyError: except KeyError:
Logger.log("e", "Current material storage on printer was an invalid reply (missing GUIDs).") Logger.log("e", "Request material storage on printer: Printer's answer was missing GUIDs.")
return return
container_registry = ContainerRegistry.getInstance() container_registry = ContainerRegistry.getInstance()

View file

@ -198,7 +198,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin):
has_cluster_capable_firmware = Version(system_info["firmware"]) > self._min_cluster_version has_cluster_capable_firmware = Version(system_info["firmware"]) > self._min_cluster_version
instance_name = "manual:%s" % address instance_name = "manual:%s" % address
properties = { properties = {
b"name": system_info["name"].encode("utf-8"), b"name": (system_info["name"] + " (manual)").encode("utf-8"),
b"address": address.encode("utf-8"), b"address": address.encode("utf-8"),
b"firmware_version": system_info["firmware"].encode("utf-8"), b"firmware_version": system_info["firmware"].encode("utf-8"),
b"manual": b"true", b"manual": b"true",

View file

@ -1,4 +1,4 @@
# Copyright (c) 2017 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 UM.Job import Job from UM.Job import Job
@ -21,7 +21,6 @@ class AutoDetectBaudJob(Job):
def run(self): def run(self):
Logger.log("d", "Auto detect baud rate started.") Logger.log("d", "Auto detect baud rate started.")
timeout = 3
wait_response_timeouts = [3, 15, 30] wait_response_timeouts = [3, 15, 30]
wait_bootloader_times = [1.5, 5, 15] wait_bootloader_times = [1.5, 5, 15]
write_timeout = 3 write_timeout = 3
@ -52,7 +51,7 @@ class AutoDetectBaudJob(Job):
if serial is None: if serial is None:
try: try:
serial = Serial(str(self._serial_port), baud_rate, timeout = read_timeout, writeTimeout = write_timeout) serial = Serial(str(self._serial_port), baud_rate, timeout = read_timeout, writeTimeout = write_timeout)
except SerialException as e: except SerialException:
Logger.logException("w", "Unable to create serial") Logger.logException("w", "Unable to create serial")
continue continue
else: else:

View file

@ -15,7 +15,7 @@ from cura.PrinterOutput.GenericOutputController import GenericOutputController
from .AutoDetectBaudJob import AutoDetectBaudJob from .AutoDetectBaudJob import AutoDetectBaudJob
from .avr_isp import stk500v2, intelHex from .avr_isp import stk500v2, intelHex
from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty, QUrl
from serial import Serial, SerialException, SerialTimeoutException from serial import Serial, SerialException, SerialTimeoutException
from threading import Thread, Event from threading import Thread, Event
@ -146,8 +146,11 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
@pyqtSlot(str) @pyqtSlot(str)
def updateFirmware(self, file): def updateFirmware(self, file):
# the file path is qurl encoded. # the file path could be url-encoded.
self._firmware_location = file.replace("file://", "") if file.startswith("file://"):
self._firmware_location = QUrl(file).toLocalFile()
else:
self._firmware_location = file
self.showFirmwareInterface() self.showFirmwareInterface()
self.setFirmwareUpdateState(FirmwareUpdateState.updating) self.setFirmwareUpdateState(FirmwareUpdateState.updating)
self._update_firmware_thread.start() self._update_firmware_thread.start()

View file

@ -662,6 +662,23 @@
} }
} }
}, },
"VersionUpgrade34to40": {
"package_info": {
"package_id": "VersionUpgrade34to40",
"package_type": "plugin",
"display_name": "Version Upgrade 3.4 to 4.0",
"description": "Upgrades configurations from Cura 3.4 to Cura 4.0.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"X3DReader": { "X3DReader": {
"package_info": { "package_info": {
"package_id": "X3DReader", "package_id": "X3DReader",
@ -1366,277 +1383,5 @@
"website": "https://www.vellemanprojects.eu" "website": "https://www.vellemanprojects.eu"
} }
} }
},
"ConsoleLogger": {
"package_info": {
"package_id": "ConsoleLogger",
"package_type": "plugin",
"display_name": "Console Logger",
"description": "Outputs log information to the console.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"OBJReader": {
"package_info": {
"package_id": "OBJReader",
"package_type": "plugin",
"display_name": "Wavefront OBJ Reader",
"description": "Makes it possible to read Wavefront OBJ files.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"OBJWriter": {
"package_info": {
"package_id": "OBJWriter",
"package_type": "plugin",
"display_name": "Wavefront OBJ Writer",
"description": "Makes it possible to write Wavefront OBJ files.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"STLReader": {
"package_info": {
"package_id": "STLReader",
"package_type": "plugin",
"display_name": "STL Reader",
"description": "Provides support for reading STL files.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"STLWriter": {
"package_info": {
"package_id": "STLWriter",
"package_type": "plugin",
"display_name": "STL Writer",
"description": "Provides support for writing STL files.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"FileLogger": {
"package_info": {
"package_id": "FileLogger",
"package_type": "plugin",
"display_name": "File Logger",
"description": "Outputs log information to a file in your settings folder.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"LocalContainerProvider": {
"package_info": {
"package_id": "LocalContainerProvider",
"package_type": "plugin",
"display_name": "Local Container Provider",
"description": "Provides built-in setting containers that come with the installation of the application.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"LocalFileOutputDevice": {
"package_info": {
"package_id": "LocalFileOutputDevice",
"package_type": "plugin",
"display_name": "Local File Output Device",
"description": "Enables saving to local files.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"CameraTool": {
"package_info": {
"package_id": "CameraTool",
"package_type": "plugin",
"display_name": "Camera Tool",
"description": "Provides the tool to manipulate the camera.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"MirrorTool": {
"package_info": {
"package_id": "MirrorTool",
"package_type": "plugin",
"display_name": "Mirror Tool",
"description": "Provides the Mirror tool.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"RotateTool": {
"package_info": {
"package_id": "RotateTool",
"package_type": "plugin",
"display_name": "Rotate Tool",
"description": "Provides the Rotate tool.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"ScaleTool": {
"package_info": {
"package_id": "ScaleTool",
"package_type": "plugin",
"display_name": "Scale Tool",
"description": "Provides the Scale tool.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"SelectionTool": {
"package_info": {
"package_id": "SelectionTool",
"package_type": "plugin",
"display_name": "Selection Tool",
"description": "Provides the Selection tool.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"TranslateTool": {
"package_info": {
"package_id": "TranslateTool",
"package_type": "plugin",
"display_name": "Move Tool",
"description": "Provides the Move tool.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"UpdateChecker": {
"package_info": {
"package_id": "UpdateChecker",
"package_type": "plugin",
"display_name": "Update Checker",
"description": "Checks for updates of the software.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
},
"SimpleView": {
"package_info": {
"package_id": "SimpleView",
"package_type": "plugin",
"display_name": "Simple View",
"description": "Provides a simple solid mesh view.",
"package_version": "1.0.0",
"sdk_version": 4,
"website": "https://ultimaker.com",
"author": {
"author_id": "Ultimaker",
"display_name": "Ultimaker B.V.",
"email": "plugins@ultimaker.com",
"website": "https://ultimaker.com"
}
}
} }
} }

View file

@ -9,6 +9,8 @@
"file_formats": "text/x-gcode", "file_formats": "text/x-gcode",
"platform": "discoeasy200.stl", "platform": "discoeasy200.stl",
"platform_offset": [ 105, -59, 280], "platform_offset": [ 105, -59, 280],
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains": "machine_extruder_trains":
{ {
"0": "dagoma_discoeasy200_extruder_0" "0": "dagoma_discoeasy200_extruder_0"
@ -29,32 +31,44 @@
}, },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[17, 70], [-17, -70],
[17, -40], [-17, 40],
[-17, -40], [17, 40],
[17, 70] [17, -70]
] ]
}, },
"gantry_height": { "gantry_height": {
"default_value": 10 "default_value": 10
}, },
"machine_start_gcode": { "machine_start_gcode": {
"default_value": ";Gcode by Cura\nG90\nM106 S250\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature_layer_0}\nG29\nM107\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E10\nG92 E0\nG1 Z3\nG1 F6000\n" "default_value": ";Gcode by Cura\nG90\nM106 S255\nG28 X Y\nG1 X50\nM109 R90\nG28\nM104 S{material_print_temperature_layer_0}\nG29\nM107\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E10\nG92 E0\nG1 Z3\nG1 F6000\n"
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 F3000\nG90\nG28 X Y\nM107\nM84\n" "default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 F3000\nG90\nG28 X Y\nM107\nM84\n"
}, },
"default_material_print_temperature": {
"default_value": 205
},
"speed_print": { "speed_print": {
"default_value": 60 "default_value": 60
}, },
"speed_travel": { "speed_travel": {
"value": "100" "default_value": 100
}, },
"retraction_amount": { "retraction_amount": {
"default_value": 3.5 "default_value": 3.5
}, },
"retraction_speed": { "retraction_speed": {
"default_value": 50 "default_value": 50
},
"adhesion_type": {
"default_value": "skirt"
},
"skirt_line_count": {
"default_value": 2
},
"layer_height_0": {
"default_value": 0.26
} }
} }
} }

View file

@ -1,5 +1,4 @@
{ {
"id": "Dagoma_neva",
"name": "Dagoma NEVA", "name": "Dagoma NEVA",
"version": 2, "version": 2,
"inherits": "fdmprinter", "inherits": "fdmprinter",
@ -10,6 +9,8 @@
"file_formats": "text/x-gcode", "file_formats": "text/x-gcode",
"platform": "neva.stl", "platform": "neva.stl",
"platform_offset": [ 0, 0, 0], "platform_offset": [ 0, 0, 0],
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains": "machine_extruder_trains":
{ {
"0": "dagoma_neva_extruder_0" "0": "dagoma_neva_extruder_0"
@ -30,10 +31,10 @@
}, },
"machine_head_with_fans_polygon": { "machine_head_with_fans_polygon": {
"default_value": [ "default_value": [
[17, 40], [-36, -42],
[17, -70], [-36, 42],
[-17, -70], [36, 42],
[17, 40] [36, -42]
] ]
}, },
"gantry_height": { "gantry_height": {
@ -43,14 +44,17 @@
"default_value": "elliptic" "default_value": "elliptic"
}, },
"machine_gcode_flavor": { "machine_gcode_flavor": {
"default_value": "RepRap (RepRap)" "default_value": "RepRap"
}, },
"machine_start_gcode": { "machine_start_gcode": {
"default_value": ";Gcode by Cura\nG90\nG28\nM109 S100\nG29\nM104 S{material_print_temperature_layer_0}\nG0 X0 Y-85\nG0 Z0.26\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E6\nG92 E0\nG1 F200 E-3.5\nG0 Z0.15\nG0 X10\nG0 Z3\nG1 F6000\n" "default_value": ";Gcode by Cura\nG90\nG28\nM107\nM109 R100\nG29\nM109 S{material_print_temperature_layer_0} U-55 X55 V-85 Y-85 W0.26 Z0.26\nM82\nG92 E0\nG1 F200 E6\nG92 E0\nG1 F200 E-3.5\nG0 Z0.15\nG0 X10\nG0 Z3\nG1 F6000\n"
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 E-2 F9000\nG90\nG28\n" "default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 E-2 F9000\nG90\nG28\n"
}, },
"default_material_print_temperature": {
"default_value": 205
},
"speed_print": { "speed_print": {
"default_value": 40 "default_value": 40
}, },
@ -62,6 +66,15 @@
}, },
"retraction_speed": { "retraction_speed": {
"default_value": 60 "default_value": 60
},
"adhesion_type": {
"default_value": "skirt"
},
"skirt_line_count": {
"default_value": 2
},
"layer_height_0": {
"default_value": 0.26
} }
} }
} }

View file

@ -0,0 +1,80 @@
{
"name": "Dagoma NEVA Magis",
"version": 2,
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Dagoma",
"manufacturer": "Dagoma",
"file_formats": "text/x-gcode",
"platform": "neva.stl",
"platform_offset": [ 0, 0, 0],
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains":
{
"0": "dagoma_neva_magis_extruder_0"
}
},
"overrides": {
"machine_width": {
"default_value": 195.55
},
"machine_height": {
"default_value": 205
},
"machine_depth": {
"default_value": 195.55
},
"machine_center_is_zero": {
"default_value": true
},
"machine_head_with_fans_polygon": {
"default_value": [
[-36, -42],
[-36, 42],
[36, 42],
[36, -42]
]
},
"gantry_height": {
"default_value": 0
},
"machine_shape": {
"default_value": "elliptic"
},
"machine_gcode_flavor": {
"default_value": "RepRap"
},
"machine_start_gcode": {
"default_value": ";Gcode by Cura\nG90\nG28\nM107\nM109 R100\nG29\nM109 S{material_print_temperature_layer_0} U-55 X55 V-85 Y-85 W0.26 Z0.26\nM82\nG92 E0\nG1 F200 E6\nG92 E0\nG1 F200 E-3.5\nG0 Z0.15\nG0 X10\nG0 Z3\nG1 F6000\n"
},
"machine_end_gcode": {
"default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 E-2 F9000\nG90\nG28\n"
},
"default_material_print_temperature": {
"default_value": 205
},
"speed_print": {
"default_value": 40
},
"speed_travel": {
"default_value": 120
},
"retraction_amount": {
"default_value": 3.8
},
"retraction_speed": {
"default_value": 60
},
"adhesion_type": {
"default_value": "skirt"
},
"skirt_line_count": {
"default_value": 2
},
"layer_height_0": {
"default_value": 0.26
}
}
}

View file

@ -1713,6 +1713,17 @@
"limit_to_extruder": "infill_extruder_nr", "limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"infill_wall_line_count":
{
"label": "Extra Infill Wall Count",
"description": "Add extra wals around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\nThis feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right.",
"default_value": 0,
"type": "int",
"minimum_value": "0",
"enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled",
"limit_to_extruder": "infill_extruder_nr",
"settable_per_mesh": true
},
"sub_div_rad_add": "sub_div_rad_add":
{ {
"label": "Cubic Subdivision Shell", "label": "Cubic Subdivision Shell",
@ -3014,7 +3025,7 @@
{ {
"label": "Initial Layer Print Acceleration", "label": "Initial Layer Print Acceleration",
"description": "The acceleration during the printing of the initial layer.", "description": "The acceleration during the printing of the initial layer.",
"unit": "mm/s", "unit": "mm/s²",
"type": "float", "type": "float",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_layer_0", "value": "acceleration_layer_0",
@ -3028,7 +3039,7 @@
{ {
"label": "Initial Layer Travel Acceleration", "label": "Initial Layer Travel Acceleration",
"description": "The acceleration for travel moves in the initial layer.", "description": "The acceleration for travel moves in the initial layer.",
"unit": "mm/s", "unit": "mm/s²",
"type": "float", "type": "float",
"default_value": 3000, "default_value": 3000,
"value": "acceleration_layer_0 * acceleration_travel / acceleration_print", "value": "acceleration_layer_0 * acceleration_travel / acceleration_print",
@ -4723,7 +4734,7 @@
}, },
"raft_base_line_spacing": "raft_base_line_spacing":
{ {
"label": "Raft Line Spacing", "label": "Raft Base Line Spacing",
"description": "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate.", "description": "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate.",
"unit": "mm", "unit": "mm",
"type": "float", "type": "float",
@ -5046,7 +5057,7 @@
"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": 5, "default_value": 6,
"minimum_value": "0", "minimum_value": "0",
"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", "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')",

View file

@ -0,0 +1,50 @@
{
"version": 2,
"name": "TiZYX K25",
"inherits": "fdmprinter",
"metadata":
{
"visible": true,
"author": "TiZYX",
"manufacturer": "TiZYX",
"file_formats": "text/x-gcode",
"platform": "tizyx_k25_platform.stl",
"platform_offset": [0, -4, 0],
"exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ],
"preferred_material": "tizyx_pla",
"has_machine_quality": true,
"has_materials": true,
"machine_extruder_trains":
{
"0": "tizyx_k25_extruder_0"
}
},
"overrides":
{
"machine_name": { "default_value": "TiZYX K25" },
"machine_heated_bed": { "default_value": true },
"machine_width": { "default_value": 255 },
"machine_height": { "default_value": 255 },
"machine_depth": { "default_value": 255 },
"machine_center_is_zero": { "default_value": false },
"gantry_height": { "default_value": 500 },
"machine_head_with_fans_polygon": {
"default_value": [
[25, 49],
[25, -49],
[-25, -49],
[25, 49]
]
},
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode":
{
"default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0"
},
"machine_end_gcode":
{
"default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84"
}
}
}

View file

@ -0,0 +1,137 @@
{
"version": 2,
"name": "Winbo Dragon(L)4",
"inherits": "fdmprinter",
"metadata": {
"author": "Winbo",
"manufacturer": "Winbo Smart Tech Co., Ltd.",
"category": "Other",
"visible": true,
"file_formats": "text/x-gcode",
"supports_usb_connection": false,
"machine_extruder_trains":
{
"0": "winbo_dragonl4_extruder"
}
},
"overrides": {
"machine_name": { "default_value": "Winbo Dragon(L)4" },
"machine_width": { "default_value": 615 },
"machine_depth": { "default_value": 463 },
"machine_height": { "default_value": 615 },
"machine_heated_bed": { "default_value": true },
"material_bed_temp_wait": { "default_value": false },
"machine_filament_park_distance": { "value": "machine_heat_zone_length" },
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
"machine_nozzle_cool_down_speed": { "default_value": 0.8 },
"machine_head_with_fans_polygon":
{
"default_value":
[
[ -50, 90 ],[ -50, -60 ],[ 50, -60 ],[ 50, 90 ]
]
},
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 },
"machine_max_feedrate_z": { "default_value": 40 },
"machine_acceleration": { "default_value": 2000 },
"gantry_height": { "default_value": 80 },
"machine_extruder_count": { "default_value": 1 },
"machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nM9998\nG28 X0 Y0\nG28 Z0\nG1 F6000 Z0.3\nG92 E0\nG1 F800 X585 E12\nG92 E0" },
"machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" },
"prime_blob_enable": { "enabled": true },
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "1800" },
"acceleration_travel": { "value": "2000" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"brim_width": { "value": "4" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_fan_speed": { "value": "100" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"fill_outline_gaps": { "value": "True" },
"infill_overlap": { "value": "0" },
"min_infill_area": { "value": "1" },
"min_skin_width_for_expansion": { "value": "2" },
"jerk_enabled": { "value": "True" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_print": { "value": "25" },
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_support_interface": { "value": "jerk_topbottom" },
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
"wall_thickness": { "value": "2.4"},
"line_width": { "value": "extruderValue(-1,'machine_nozzle_size')" },
"wall_0_inset": { "value": "0.05" },
"wall_line_width_x": { "value": "line_width" },
"wall_line_width_0": { "value": "line_width-0.05" },
"support_line_width": { "value": "max(min(line_width,0.4),line_width/2)" },
"support_interface_line_width": { "value": "support_line_width" },
"machine_min_cool_heat_time_window": { "value": "15" },
"default_material_print_temperature": { "value": "200" },
"material_print_temperature_layer_0": { "value": "material_print_temperature - 5" },
"material_bed_temperature": { "maximum_value": "100" },
"material_bed_temperature_layer_0": { "maximum_value": "100" },
"raft_airgap": { "value": "0" },
"raft_base_thickness": { "value": "0.3" },
"raft_interface_line_spacing": { "value": "0.5" },
"raft_interface_line_width": { "value": "0.5" },
"raft_interface_thickness": { "value": "0.2" },
"raft_jerk": { "value": "jerk_layer_0" },
"raft_margin": { "value": "5" },
"raft_surface_layers": { "value": "2" },
"retraction_amount": { "value": "4" },
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "0.5" },
"retraction_hop_enabled": { "value": "True" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "25" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "25" },
"speed_print": { "value": "70" },
"speed_support": { "value": "speed_print*line_width/support_line_width" },
"speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" },
"speed_topbottom": { "value": "speed_print*line_width/skin_line_width" },
"speed_travel": { "value": "100" },
"speed_infill": { "value": "speed_print*line_width/infill_line_width" },
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
"support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" },
"top_bottom_thickness": { "value": "max(1.2,layer_height*6)" },
"travel_avoid_distance": { "value": "3" },
"gradual_support_infill_step_height": { "value": "0.2" },
"gradual_support_infill_steps": { "value": "1" },
"infill_sparse_density": { "value": "20" },
"gradual_infill_step_height": { "value": "1" },
"initial_layer_line_width_factor": { "value": "120" },
"jerk_travel": { "value": "25" },
"support_bottom_enable": { "value": "True" },
"support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" },
"support_bottom_pattern": { "value": "'zigzag'" },
"support_connect_zigzags": { "value": "False" },
"support_infill_rate": { "value": "8" },
"support_interface_density": { "value": "80" },
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
}
}

View file

@ -0,0 +1,137 @@
{
"version": 2,
"name": "Winbo Mini2",
"inherits": "fdmprinter",
"metadata": {
"author": "Winbo",
"manufacturer": "Winbo Smart Tech Co., Ltd.",
"category": "Other",
"visible": true,
"file_formats": "text/x-gcode",
"supports_usb_connection": true,
"machine_extruder_trains":
{
"0": "winbo_mini2_extruder"
}
},
"overrides": {
"machine_name": { "default_value": "Winbo Mini2" },
"machine_width": { "default_value": 205 },
"machine_depth": { "default_value": 155 },
"machine_height": { "default_value": 205 },
"machine_heated_bed": { "default_value": false },
"material_bed_temp_wait": { "default_value": false },
"machine_filament_park_distance": { "value": "machine_heat_zone_length" },
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
"machine_nozzle_cool_down_speed": { "default_value": 0.8 },
"machine_head_with_fans_polygon":
{
"default_value":
[
[ -52, 30 ],[ -52, -40 ],[ 13, -40 ],[ 13, 30 ]
]
},
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_max_feedrate_x": { "default_value": 250 },
"machine_max_feedrate_y": { "default_value": 200 },
"machine_max_feedrate_z": { "default_value": 40 },
"machine_acceleration": { "default_value": 3000 },
"gantry_height": { "default_value": 75 },
"machine_extruder_count": { "default_value": 1 },
"machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nG28 X0 Y0\nG28 Z0\nG1 F1000 Z3\nG1 F4000 X0\nG1 F4000 Y0\nG1 F1000 Z0.2\nG92 E0\nG1 F1000 X30 E8\nG92 E0\nM117 Printing." },
"machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" },
"prime_blob_enable": { "enabled": true },
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "2000" },
"acceleration_travel": { "value": "2500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"brim_width": { "value": "3" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_fan_speed": { "value": "100" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"fill_outline_gaps": { "value": "True" },
"infill_overlap": { "value": "0" },
"min_infill_area": { "value": "1" },
"min_skin_width_for_expansion": { "value": "2" },
"jerk_enabled": { "value": "True" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_print": { "value": "25" },
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_support_interface": { "value": "jerk_topbottom" },
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
"wall_thickness": { "value": "1.2"},
"line_width": { "value": "extruderValue(-1,'machine_nozzle_size')" },
"wall_0_inset": { "value": "0.05" },
"wall_line_width_x": { "value": "line_width" },
"wall_line_width_0": { "value": "line_width-0.05" },
"support_line_width": { "value": "max(min(line_width,0.4),line_width/2)" },
"support_interface_line_width": { "value": "support_line_width" },
"machine_min_cool_heat_time_window": { "value": "15" },
"default_material_print_temperature": { "value": "200" },
"material_print_temperature_layer_0": { "value": "material_print_temperature - 5" },
"material_bed_temperature": { "maximum_value": "115" },
"material_bed_temperature_layer_0": { "maximum_value": "115" },
"raft_airgap": { "value": "0" },
"raft_base_thickness": { "value": "0.3" },
"raft_interface_line_spacing": { "value": "0.5" },
"raft_interface_line_width": { "value": "0.5" },
"raft_interface_thickness": { "value": "0.2" },
"raft_jerk": { "value": "jerk_layer_0" },
"raft_margin": { "value": "10" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "4" },
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "0.5" },
"retraction_hop_enabled": { "value": "True" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "25" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "20" },
"speed_print": { "value": "50" },
"speed_support": { "value": "speed_print*line_width/support_line_width" },
"speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" },
"speed_topbottom": { "value": "speed_print*line_width/skin_line_width" },
"speed_travel": { "value": "90" },
"speed_infill": { "value": "speed_print*line_width/infill_line_width" },
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
"support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" },
"top_bottom_thickness": { "value": "max(1.2,layer_height*6)" },
"travel_avoid_distance": { "value": "3" },
"gradual_support_infill_step_height": { "value": "0.2" },
"gradual_support_infill_steps": { "value": "1" },
"infill_sparse_density": { "value": "20" },
"gradual_infill_step_height": { "value": "1" },
"initial_layer_line_width_factor": { "value": "120" },
"jerk_travel": { "value": "25" },
"support_bottom_enable": { "value": "True" },
"support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" },
"support_bottom_pattern": { "value": "'zigzag'" },
"support_connect_zigzags": { "value": "False" },
"support_infill_rate": { "value": "8" },
"support_interface_density": { "value": "80" },
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
}
}

View file

@ -0,0 +1,126 @@
{
"version": 2,
"name": "Winbo Super Helper 105",
"inherits": "fdmprinter",
"metadata": {
"author": "Winbo",
"manufacturer": "Winbo Smart Tech Co., Ltd.",
"category": "Other",
"visible": true,
"file_formats": "text/x-gcode",
"supports_usb_connection": true,
"machine_extruder_trains":
{
"0": "winbo_superhelper105_extruder"
}
},
"overrides": {
"machine_name": { "default_value": "Winbo Super Helper 105" },
"machine_width": { "default_value": 108 },
"machine_depth": { "default_value": 108 },
"machine_height": { "default_value": 158 },
"machine_heated_bed": { "default_value": false },
"material_bed_temp_wait": { "default_value": false },
"machine_filament_park_distance": { "value": "machine_heat_zone_length" },
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
"machine_nozzle_cool_down_speed": { "default_value": 0.8 },
"machine_head_with_fans_polygon":
{
"default_value":
[
[ -110, 50 ],[ -110, -30 ],[ 110, -30 ],[ 110, 50 ]
]
},
"machine_gcode_flavor": { "default_value": "Marlin" },
"machine_max_feedrate_x": { "default_value": 250 },
"machine_max_feedrate_y": { "default_value": 200 },
"machine_max_feedrate_z": { "default_value": 40 },
"machine_acceleration": { "default_value": 2000 },
"gantry_height": { "default_value": 200 },
"machine_extruder_count": { "default_value": 1 },
"machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nG28 X0 Y0\nG28 Z0\nG1 F6000 Z0.3\nG92 E0\nG1 F1000 X30 E8\nG92 E0\nM117 Printing." },
"machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" },
"prime_blob_enable": { "enabled": true },
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "2000" },
"acceleration_travel": { "value": "1500" },
"acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_support_interface": { "value": "acceleration_topbottom" },
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" },
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" },
"acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" },
"brim_width": { "value": "3" },
"cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" },
"cool_fan_speed": { "value": "100" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"fill_outline_gaps": { "value": "True" },
"infill_overlap": { "value": "0" },
"min_infill_area": { "value": "1" },
"min_skin_width_for_expansion": { "value": "2" },
"jerk_enabled": { "value": "True" },
"jerk_layer_0": { "value": "jerk_topbottom" },
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_print": { "value": "25" },
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
"jerk_support_interface": { "value": "jerk_topbottom" },
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
"wall_thickness": { "value": "0.8"},
"line_width": { "value": "extruderValue(-1,'machine_nozzle_size')" },
"raft_base_thickness": { "value": "0.3" },
"raft_interface_line_spacing": { "value": "0.5" },
"raft_interface_line_width": { "value": "0.5" },
"raft_interface_thickness": { "value": "0.2" },
"raft_jerk": { "value": "jerk_layer_0" },
"raft_margin": { "value": "10" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "4" },
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "0.5" },
"retraction_hop_enabled": { "value": "True" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "25" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "20" },
"speed_print": { "value": "52" },
"speed_support": { "value": "speed_print*line_width/support_line_width" },
"speed_support_interface": { "value": "speed_print*line_width/support_interface_line_width" },
"speed_topbottom": { "value": "speed_print*line_width/skin_line_width" },
"speed_travel": { "value": "80" },
"speed_infill": { "value": "speed_print*line_width/infill_line_width" },
"speed_wall": { "value": "speed_print*wall_line_width_0/line_width" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 0.6)" },
"speed_wall_x": { "value": "speed_wall" },
"speed_equalize_flow_enabled": { "value": "False" },
"support_angle": { "value": "50" },
"support_xy_distance": { "value": "1" },
"support_z_distance": { "value": "max((0.2 if(0.2%layer_height==0) else layer_height*int((0.2+layer_height)/layer_height)),layer_height)" },
"support_bottom_distance": { "value": "max(support_z_distance,layer_height*int(0.45/layer_height))" },
"top_bottom_thickness": { "value": "max(1.2,layer_height*6)" },
"travel_avoid_distance": { "value": "3" },
"gradual_support_infill_step_height": { "value": "0.2" },
"gradual_support_infill_steps": { "value": "1" },
"infill_sparse_density": { "value": "20" },
"gradual_infill_step_height": { "value": "1" },
"initial_layer_line_width_factor": { "value": "120" },
"jerk_travel": { "value": "25" },
"support_bottom_enable": { "value": "True" },
"support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" },
"support_bottom_pattern": { "value": "'zigzag'" },
"support_connect_zigzags": { "value": "False" },
"support_infill_rate": { "value": "8" },
"support_interface_density": { "value": "80" },
"support_interface_enable": { "value": "True" },
"support_interface_height": { "value": "0.5" },
"support_roof_pattern": { "value": "'concentric'" },
"z_seam_type": { "value": "'shortest'" },
"speed_equalize_flow_max": { "value": "65" }
}
}

View file

@ -0,0 +1,30 @@
{
"version": 2,
"name": "Winbo Super Helper 155",
"inherits": "winbo_superhelper105",
"metadata": {
"author": "Winbo",
"manufacturer": "Winbo Smart Tech Co., Ltd.",
"category": "Other",
"visible": true,
"file_formats": "text/x-gcode",
"supports_usb_connection": true,
"machine_extruder_trains":
{
"0": "winbo_superhelper155_extruder"
}
},
"overrides": {
"machine_name": { "default_value": "Winbo Super Helper 155" },
"machine_width": { "default_value": 158 },
"machine_depth": { "default_value": 158 },
"machine_height": { "default_value": 208 },
"machine_head_with_fans_polygon":
{
"default_value":
[
[ -160, 50 ],[ -160, -30 ],[ 160, -30 ],[ 160, 50 ]
]
}
}
}

View file

@ -1,5 +1,4 @@
{ {
"id": "dagoma_discoeasy200_extruder_0",
"version": 2, "version": 2,
"name": "Extruder 1", "name": "Extruder 1",
"inherits": "fdmextruder", "inherits": "fdmextruder",
@ -9,8 +8,14 @@
}, },
"overrides": { "overrides": {
"extruder_nr": { "default_value": 0 }, "extruder_nr": {
"machine_nozzle_size": { "default_value": 0.4 }, "default_value": 0
"material_diameter": { "default_value": 1.75 } },
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
}
} }
} }

View file

@ -1,5 +1,4 @@
{ {
"id": "dagoma_neva_extruder_0",
"version": 2, "version": 2,
"name": "Extruder 1", "name": "Extruder 1",
"inherits": "fdmextruder", "inherits": "fdmextruder",
@ -9,8 +8,14 @@
}, },
"overrides": { "overrides": {
"extruder_nr": { "default_value": 0 }, "extruder_nr": {
"machine_nozzle_size": { "default_value": 0.4 }, "default_value": 0
"material_diameter": { "default_value": 1.75 } },
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
}
} }
} }

View file

@ -0,0 +1,21 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "dagoma_neva_magis",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
}
}
}

View file

@ -0,0 +1,16 @@
{
"id": "tizyx_k25_extruder_0",
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "tizyx_k25",
"position": "0"
},
"overrides": {
"extruder_nr": { "default_value": 0 },
"machine_nozzle_size": { "default_value": 0.4 },
"material_diameter": { "default_value": 1.75 }
}
}

View file

@ -0,0 +1,20 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "winbo_dragonl4",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "2"
},
"material_diameter": { "default_value": 3.0 },
"machine_nozzle_size": { "default_value": 0.8 },
"machine_nozzle_offset_x": { "default_value": 0.0 },
"machine_nozzle_offset_y": { "default_value": 0.0 }
}
}

View file

@ -0,0 +1,20 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "winbo_mini2",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "2"
},
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_nozzle_offset_x": { "default_value": 0.0 },
"machine_nozzle_offset_y": { "default_value": 0.0 }
}
}

View file

@ -0,0 +1,20 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "winbo_superhelper105",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "2"
},
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_nozzle_offset_x": { "default_value": 0.0 },
"machine_nozzle_offset_y": { "default_value": 0.0 }
}
}

View file

@ -0,0 +1,20 @@
{
"version": 2,
"name": "Extruder 1",
"inherits": "fdmextruder",
"metadata": {
"machine": "winbo_superhelper155",
"position": "0"
},
"overrides": {
"extruder_nr": {
"default_value": 0,
"maximum_value": "2"
},
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"machine_nozzle_offset_x": { "default_value": 0.0 },
"machine_nozzle_offset_y": { "default_value": 0.0 }
}
}

View file

@ -4036,7 +4036,7 @@ msgstr "&Ansicht"
#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184
msgctxt "@title:menu" msgctxt "@title:menu"
msgid "&Settings" msgid "&Settings"
msgstr "&Einstellungen" msgstr "&Konfiguration"
#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186
msgctxt "@title:menu menubar:toplevel" msgctxt "@title:menu menubar:toplevel"

Binary file not shown.

View file

@ -26,7 +26,6 @@ Column
OutputDeviceHeader OutputDeviceHeader
{ {
width: parent.width
outputDevice: connectedDevice outputDevice: connectedDevice
} }

View file

@ -16,7 +16,7 @@ Item
Rectangle Rectangle
{ {
anchors.fill: parent height: childrenRect.height
color: UM.Theme.getColor("setting_category") color: UM.Theme.getColor("setting_category")
property var activePrinter: outputDevice != null ? outputDevice.activePrinter : null property var activePrinter: outputDevice != null ? outputDevice.activePrinter : null

View file

@ -48,14 +48,15 @@ Item {
} }
function sliceOrStopSlicing() { function sliceOrStopSlicing() {
try { if ([1, 5].indexOf(base.backendState) != -1)
if ([1, 5].indexOf(base.backendState) != -1) { {
CuraApplication.backend.forceSlice(); prepareButton.preparingToSlice = true;
} else { CuraApplication.backend.forceSlice();
CuraApplication.backend.stopSlicing(); }
} else
} catch (e) { {
console.log('Could not start or stop slicing', e) prepareButton.preparingToSlice = false;
CuraApplication.backend.stopSlicing();
} }
} }
@ -167,12 +168,10 @@ Item {
// Prepare button, only shows if auto_slice is off // Prepare button, only shows if auto_slice is off
Button { Button {
id: prepareButton id: prepareButton
property bool preparingToSlice: false
property bool showPrepare : false;
tooltip: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process") tooltip: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process")
// 1 = not started, 2 = Processing // 1 = not started, 2 = Processing
enabled: base.backendState != "undefined" && ([1, 2].indexOf(base.backendState) != -1) && base.activity enabled: !preparingToSlice && base.backendState != "undefined" && ([1, 2].indexOf(base.backendState) != -1) && base.activity
visible: base.backendState != "undefined" && !autoSlice && ([1, 2, 4].indexOf(base.backendState) != -1) && base.activity visible: base.backendState != "undefined" && !autoSlice && ([1, 2, 4].indexOf(base.backendState) != -1) && base.activity
property bool autoSlice property bool autoSlice
height: UM.Theme.getSize("save_button_save_to_button").height height: UM.Theme.getSize("save_button_save_to_button").height
@ -183,18 +182,24 @@ Item {
// 1 = not started, 4 = error, 5 = disabled // 1 = not started, 4 = error, 5 = disabled
text: { text: {
if (preparingToSlice)
if (base.backendState == 1 && showPrepare)
{ {
showPrepare = false return catalog.i18nc("@label:Printjob", "Preparing");
return catalog.i18nc("@label:Printjob", "Preparing") }
else
{
if ([1, 4, 5].indexOf(base.backendState) != -1)
{
return catalog.i18nc("@label:Printjob", "Prepare");
}
else
{
return catalog.i18nc("@label:Printjob", "Cancel")
}
} }
return [1, 4, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel")
} }
onClicked: onClicked:
{ {
showPrepare = true
sliceOrStopSlicing(); sliceOrStopSlicing();
} }
@ -249,6 +254,17 @@ Item {
} }
label: Item { } label: Item { }
} }
Connections {
target: UM.Backend
onStateChanged:
{
if ([2, 3].indexOf(UM.Backend.state) != -1)
{
prepareButton.preparingToSlice = false;
}
}
}
} }
Button { Button {

View file

@ -20,13 +20,6 @@ SettingItem
anchors.fill: parent anchors.fill: parent
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.NoButton
onWheel: wheel.accepted = true
}
background: Rectangle background: Rectangle
{ {
color: color:

View file

@ -71,13 +71,6 @@ SettingItem
currentIndex: propertyProvider.properties.value currentIndex: propertyProvider.properties.value
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.NoButton
onWheel: wheel.accepted = true;
}
property string color: "#fff" property string color: "#fff"
Binding Binding

View file

@ -76,13 +76,6 @@ SettingItem
when: control.model.items.length > 0 when: control.model.items.length > 0
} }
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.NoButton
onWheel: wheel.accepted = true;
}
property string color: "#fff" property string color: "#fff"
Binding Binding

View file

@ -1,4 +1,4 @@
// Copyright (c) 2015 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 QtQuick 2.2 import QtQuick 2.2
@ -21,8 +21,8 @@ Item
{ {
id: buttons; id: buttons;
anchors.bottom: parent.bottom; anchors.bottom: parent.bottom
anchors.left: parent.left; anchors.left: parent.left
spacing: UM.Theme.getSize("button_lining").width spacing: UM.Theme.getSize("button_lining").width
Repeater Repeater
@ -34,20 +34,22 @@ Item
height: childrenRect.height height: childrenRect.height
Button Button
{ {
text: model.name text: model.name + (model.shortcut ? (" (" + model.shortcut + ")") : "")
iconSource: (UM.Theme.getIcon(model.icon) != "") ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon iconSource: (UM.Theme.getIcon(model.icon) != "") ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon
checkable: true checkable: true
checked: model.active checked: model.active
enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled
style: UM.Theme.styles.tool_button style: UM.Theme.styles.tool_button
onCheckedChanged: { onCheckedChanged:
if (checked) { {
base.activeY = y if (checked)
{
base.activeY = y;
} }
} }
//Workaround since using ToolButton"s onClicked would break the binding of the checked property, instead //Workaround since using ToolButton's onClicked would break the binding of the checked property, instead
//just catch the click so we do not trigger that behaviour. //just catch the click so we do not trigger that behaviour.
MouseArea MouseArea
{ {
@ -57,7 +59,7 @@ Item
forceActiveFocus() //First grab focus, so all the text fields are updated forceActiveFocus() //First grab focus, so all the text fields are updated
if(parent.checked) if(parent.checked)
{ {
UM.Controller.setActiveTool(null) UM.Controller.setActiveTool(null);
} }
else else
{ {
@ -96,11 +98,13 @@ Item
width: width:
{ {
if (panel.item && panel.width > 0){ if (panel.item && panel.width > 0)
return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width) {
return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width);
} }
else { else
return 0 {
return 0;
} }
} }
height: panel.item ? panel.height + 2 * UM.Theme.getSize("default_margin").height : 0; height: panel.item ? panel.height + 2 * UM.Theme.getSize("default_margin").height : 0;
@ -124,7 +128,7 @@ Item
x: UM.Theme.getSize("default_margin").width; x: UM.Theme.getSize("default_margin").width;
y: UM.Theme.getSize("default_margin").height; y: UM.Theme.getSize("default_margin").height;
source: UM.ActiveTool.valid ? UM.ActiveTool.activeToolPanel : ""; source: UM.ActiveTool.valid ? UM.ActiveTool.activeToolPanel : ""
enabled: UM.Controller.toolsEnabled; enabled: UM.Controller.toolsEnabled;
} }
} }
@ -148,6 +152,6 @@ Item
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
visible: toolHint.text != ""; visible: toolHint.text != ""
} }
} }

View file

@ -24,6 +24,10 @@ UM.Dialog
signal yes(); signal yes();
function accept() { // pressing enter will call this function
close();
yes();
}
onClosing: onClosing:
{ {
@ -290,4 +294,4 @@ UM.Dialog
} }
} }
} }
} }

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Fast
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = draft
weight = -2
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 10
material_bed_temperature_layer_0 = =default_material_bed_temperature + 10

View file

@ -0,0 +1,13 @@
[general]
version = 4
name = Fine
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = normal
weight = 0
material = generic_pla
[values]

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Standard
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = fast
weight = -1
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 5
material_bed_temperature_layer_0 = =default_material_bed_temperature + 5

View file

@ -0,0 +1,14 @@
[general]
version = 4
name = Fast
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = draft
weight = -2
global_quality = True
[values]
layer_height = 0.2

View file

@ -0,0 +1,14 @@
[general]
version = 4
name = Fine
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = normal
weight = 0
global_quality = True
[values]
layer_height = 0.1

View file

@ -0,0 +1,14 @@
[general]
version = 4
name = Standard
definition = dagoma_discoeasy200
[metadata]
setting_version = 5
type = quality
quality_type = fast
weight = -1
global_quality = True
[values]
layer_height = 0.15

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Fast
definition = dagoma_neva_magis
[metadata]
setting_version = 5
type = quality
quality_type = draft
weight = -2
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 10
material_bed_temperature_layer_0 = =default_material_bed_temperature + 10

View file

@ -0,0 +1,13 @@
[general]
version = 4
name = Fine
definition = dagoma_neva_magis
[metadata]
setting_version = 5
type = quality
quality_type = normal
weight = 0
material = generic_pla
[values]

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Standard
definition = dagoma_neva_magis
[metadata]
setting_version = 5
type = quality
quality_type = fast
weight = -1
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 5
material_bed_temperature_layer_0 = =default_material_bed_temperature + 5

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Fast
definition = dagoma_neva
[metadata]
setting_version = 5
type = quality
quality_type = draft
weight = -2
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 10
material_bed_temperature_layer_0 = =default_material_bed_temperature + 10

View file

@ -0,0 +1,13 @@
[general]
version = 4
name = Fine
definition = dagoma_neva
[metadata]
setting_version = 5
type = quality
quality_type = normal
weight = 0
material = generic_pla
[values]

View file

@ -0,0 +1,15 @@
[general]
version = 4
name = Standard
definition = dagoma_neva
[metadata]
setting_version = 5
type = quality
quality_type = fast
weight = -1
material = generic_pla
[values]
material_print_temperature = =default_material_print_temperature + 5
material_bed_temperature_layer_0 = =default_material_bed_temperature + 5

View file

@ -0,0 +1,31 @@
[general]
version = 4
name = TiZYX K25 Normal
definition = tizyx_k25
[metadata]
quality_type = normal
setting_version = 5
type = quality
global_quality = True
[values]
adhesion_type = skirt
skirt_line_count = 2
skirt_gap = 2
cool_fan_speed_0 = 100
fill_outline_gaps = True
infill_angles = [0,90 ]
infill_sparse_density = 15
layer_height = 0.2
layer_height_0 = 0.25
material_diameter = 1.75
retraction_amount = 2.5
retraction_min_travel = 2
retraction_speed = 30
skin_angles = [0,90]
speed_print = 60
speed_topbottom = 50
speed_wall_0 = 40
top_layers = 4
wall_line_count = 2

View file

@ -15,8 +15,6 @@ variant = AA 0.25
cool_fan_speed = 40 cool_fan_speed = 40
infill_overlap = 15 infill_overlap = 15
material_final_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 5
prime_tower_size = 12
prime_tower_min_volume = 2
retraction_prime_speed = 25 retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92 wall_thickness = 0.92

View file

@ -12,8 +12,6 @@ material = generic_cpe
variant = AA 0.25 variant = AA 0.25
[values] [values]
prime_tower_size = 12
prime_tower_min_volume = 2
retraction_extrusion_window = 0.5 retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55) speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)

View file

@ -34,7 +34,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -35,7 +35,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -34,7 +34,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -15,8 +15,6 @@ variant = AA 0.25
cool_fan_speed = 40 cool_fan_speed = 40
infill_overlap = 15 infill_overlap = 15
material_final_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 5
prime_tower_size = 12
prime_tower_min_volume = 2
retraction_prime_speed = 25 retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92 wall_thickness = 0.92

View file

@ -12,8 +12,6 @@ material = generic_cpe
variant = AA 0.25 variant = AA 0.25
[values] [values]
prime_tower_size = 12
prime_tower_min_volume = 2
retraction_extrusion_window = 0.5 retraction_extrusion_window = 0.5
speed_infill = =math.ceil(speed_print * 40 / 55) speed_infill = =math.ceil(speed_print * 40 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)

View file

@ -32,7 +32,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 10
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -33,7 +33,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -32,7 +32,6 @@ material_standby_temperature = 100
multiple_mesh_overlap = 0.2 multiple_mesh_overlap = 0.2
prime_tower_enable = True prime_tower_enable = True
prime_tower_flow = 100 prime_tower_flow = 100
prime_tower_min_volume = 15
retract_at_layer_change = False retract_at_layer_change = False
retraction_count_max = 12 retraction_count_max = 12
retraction_extra_prime_amount = 0.5 retraction_extra_prime_amount = 0.5

View file

@ -37,6 +37,7 @@ infill_extruder_nr
infill_sparse_density infill_sparse_density
infill_line_distance infill_line_distance
infill_pattern infill_pattern
infill_multiplier
infill_overlap infill_overlap
infill_sparse_thickness infill_sparse_thickness
gradual_infill_steps gradual_infill_steps

View file

@ -37,6 +37,7 @@ bottom_thickness
bottom_layers bottom_layers
top_bottom_pattern top_bottom_pattern
top_bottom_pattern_0 top_bottom_pattern_0
connect_skin_polygons
skin_angles skin_angles
wall_0_inset wall_0_inset
optimize_wall_printing_order optimize_wall_printing_order
@ -73,6 +74,8 @@ infill_sparse_density
infill_line_distance infill_line_distance
infill_pattern infill_pattern
zig_zaggify_infill zig_zaggify_infill
connect_infill_polygons
infill_multiplier
infill_angles infill_angles
infill_offset_x infill_offset_x
infill_offset_y infill_offset_y

View file

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,7 +22,6 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 15
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25

View file

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,7 +22,6 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 15
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25

View file

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0 multiple_mesh_overlap = 0
prime_tower_enable = False prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0 raft_acceleration = =acceleration_layer_0
raft_airgap = 0 raft_airgap = 0

View file

@ -22,7 +22,6 @@ jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10)
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
machine_nozzle_id = BB 0.4 machine_nozzle_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0 machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 20
raft_base_speed = 20 raft_base_speed = 20
raft_interface_speed = 20 raft_interface_speed = 20
raft_speed = 25 raft_speed = 25