Merge branch 'master' into CURA-5570_beyond_comprehension

This commit is contained in:
Diego Prado Gesto 2018-08-13 09:57:36 +02:00
commit de1b8edb72
51 changed files with 527 additions and 92 deletions

View File

@ -4,15 +4,20 @@ from PyQt5.QtCore import QSize
from UM.Application import Application
class CameraImageProvider(QQuickImageProvider):
def __init__(self):
QQuickImageProvider.__init__(self, QQuickImageProvider.Image)
super().__init__(QQuickImageProvider.Image)
## Request a new image.
def requestImage(self, id, size):
for output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices():
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:
pass
return QImage(), QSize(15, 15)

View File

@ -226,6 +226,8 @@ class CuraApplication(QtApplication):
self._need_to_show_user_agreement = True
self._plugins_loaded = False
# Backups
self._auto_save = None
self._save_data_enabled = True

View File

@ -120,7 +120,7 @@ class PrinterOutputModel(QObject):
@pyqtProperty(QVariant, notify = headPositionChanged)
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):
if self._head_position.x != x or self._head_position.y != y or self._head_position.z != z:

View File

@ -1470,9 +1470,14 @@ class MachineManager(QObject):
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))
return
# This is not changing the quality for the active machine !!!!!!!!
global_stack.quality = quality_group.node_for_global.getContainer()
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
self.blurSettings.emit()

View File

@ -25,6 +25,9 @@ except ImportError:
import zipfile
import UM.Application
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
class ThreeMFWriter(MeshWriter):
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))
except Exception as e:
Logger.logException("e", "Error writing zip file")
self.setInformation(catalog.i18nc("@error:zip", "Error writing 3mf file."))
return False
finally:
if not self._store_archive:

View File

@ -1,6 +1,7 @@
# Copyright (c) 2018 Ultimaker B.V.
# 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
import os
from PyQt5.QtCore import QObject, QTimer, pyqtSlot
@ -179,7 +180,15 @@ class CuraEngineBackend(QObject, Backend):
# \return list of commands and args / parameters.
def getEngineCommand(self) -> List[str]:
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.
# This also implies the slicing has finished.
@ -541,6 +550,9 @@ class CuraEngineBackend(QObject, Backend):
## Remove old layer data (if any)
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.
if node.callDecoration("getLayerData"):
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
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),
# 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.Scene.SceneNode import SceneNode #For typing.
from UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
## A file writer that writes gzipped g-code.
#
# 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:
if mode != MeshWriter.OutputMode.BinaryMode:
Logger.log("e", "GCodeGzWriter does not support text mode.")
self.setInformation(catalog.i18nc("@error:not supported", "GCodeGzWriter does not support text mode."))
return False
#Get the g-code from the g-code writer.
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.
self.setInformation(gcode_writer.getInformation())
return False
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 UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
## Writes g-code to a file.
#
@ -62,11 +64,13 @@ class GCodeWriter(MeshWriter):
def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode):
if mode != MeshWriter.OutputMode.TextMode:
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
active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate
scene = Application.getInstance().getController().getScene()
if not hasattr(scene, "gcode_dict"):
self.setInformation(catalog.i18nc("@warning:status", "Please generate G-code before saving."))
return False
gcode_dict = getattr(scene, "gcode_dict")
gcode_list = gcode_dict.get(active_build_plate, None)
@ -82,6 +86,7 @@ class GCodeWriter(MeshWriter):
stream.write(settings)
return True
self.setInformation(catalog.i18nc("@warning:status", "Please generate G-code before saving."))
return False
## Create a new container with container 2 as base and container 1 written over it.

View File

@ -40,33 +40,37 @@ Item {
property bool layersVisible: true
function getUpperValueFromSliderHandle () {
function getUpperValueFromSliderHandle() {
return upperHandle.getValue()
}
function setUpperValue (value) {
function setUpperValue(value) {
upperHandle.setValue(value)
updateRangeHandle()
}
function getLowerValueFromSliderHandle () {
function getLowerValueFromSliderHandle() {
return lowerHandle.getValue()
}
function setLowerValue (value) {
function setLowerValue(value) {
lowerHandle.setValue(value)
updateRangeHandle()
}
function updateRangeHandle () {
function updateRangeHandle() {
rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height)
}
// set the active handle to show only one label at a time
function setActiveHandle (handle) {
function setActiveHandle(handle) {
activeHandle = handle
}
function normalizeValue(value) {
return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue)
}
// slider track
Rectangle {
id: track
@ -188,6 +192,8 @@ Item {
// set the slider position based on the upper 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)
@ -274,6 +280,8 @@ Item {
// set the slider position based on the lower 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)

View File

@ -29,6 +29,7 @@ Item {
// value properties
property real maximumValue: 100
property real minimumValue: 0
property bool roundValues: true
property real handleValue: maximumValue
@ -47,6 +48,10 @@ Item {
rangeHandle.width = handle.x - sliderRoot.handleSize
}
function normalizeValue(value) {
return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue)
}
// slider track
Rectangle {
id: track
@ -110,6 +115,8 @@ Item {
// set the slider position based on the 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)

View File

@ -25,10 +25,12 @@ from cura.Scene.BuildPlateDecorator import BuildPlateDecorator
from UM.Settings.SettingInstance import SettingInstance
import numpy
class SupportEraser(Tool):
def __init__(self):
super().__init__()
self._shortcut_key = Qt.Key_G
self._shortcut_key = Qt.Key_E
self._controller = self.getController()
self._selection_pass = None
@ -96,8 +98,7 @@ class SupportEraser(Tool):
node.setName("Eraser")
node.setSelectable(True)
mesh = MeshBuilder()
mesh.addCube(10,10,10)
mesh = self._createCube(10)
node.setMeshData(mesh.build())
active_build_plate = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate
@ -160,3 +161,28 @@ class SupportEraser(Tool):
self._skip_press = False
self._had_selection = has_selection
def _createCube(self, size):
mesh = MeshBuilder()
# Can't use MeshBuilder.addCube() because that does not get per-vertex normals
# Per-vertex normals require duplication of vertices
s = size / 2
verts = [ # 6 faces with 4 corners each
[-s, -s, s], [-s, s, s], [ s, s, s], [ s, -s, s],
[-s, s, -s], [-s, -s, -s], [ s, -s, -s], [ s, s, -s],
[ s, -s, -s], [-s, -s, -s], [-s, -s, s], [ s, -s, s],
[-s, s, -s], [ s, s, -s], [ s, s, s], [-s, s, s],
[-s, -s, s], [-s, -s, -s], [-s, s, -s], [-s, s, s],
[ s, -s, -s], [ s, -s, s], [ s, s, s], [ s, s, -s]
]
mesh.setVertices(numpy.asarray(verts, dtype=numpy.float32))
indices = []
for i in range(0, 24, 4): # All 6 quads (12 triangles)
indices.append([i, i+2, i+1])
indices.append([i, i+3, i+2])
mesh.setIndices(numpy.asarray(indices, dtype=numpy.int32))
mesh.calculateNormals()
return mesh

View File

@ -29,6 +29,16 @@ Item
anchors.topMargin: UM.Theme.getSize("default_margin").height
width: parent.width
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
model: packageData.supported_configs
headerDelegate: Rectangle

View File

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

View File

@ -105,8 +105,21 @@ Rectangle
switch(toolbox.viewCategory)
{
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
default:
toolbox.viewPage = "detail"

View File

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

View File

@ -1,5 +1,6 @@
#Copyright (c) 2018 Ultimaker B.V.
#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.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 UM.i18n import i18nCatalog
catalog = i18nCatalog("cura")
class UFPWriter(MeshWriter):
def __init__(self):
@ -32,7 +36,11 @@ class UFPWriter(MeshWriter):
#Store the g-code from the scene.
archive.addContentType(extension = "gcode", mime_type = "text/x-gcode")
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.write(gcode_textio.getvalue().encode("UTF-8"))
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.topMargin: UM.Theme.getSize("default_margin").height
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
elide: Text.ElideRight
}
Rectangle

View File

@ -9,6 +9,7 @@ Component
{
Rectangle
{
id: monitorFrame
width: maximumWidth
height: maximumHeight
color: UM.Theme.getColor("viewport_background")
@ -103,5 +104,15 @@ Component
visible: OutputDevice.activePrinter != null
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)
{
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
{
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;
}
onAccepted:
{
manager.setManualDevice(printerKey, addressText)
}
Column {
anchors.fill: parent
spacing: UM.Theme.getSize("default_margin").height
@ -393,7 +388,7 @@ Cura.MachineAction
text: catalog.i18nc("@action:button", "OK")
onClicked:
{
manualPrinterDialog.accept()
manager.setManualDevice(manualPrinterDialog.printerKey, manualPrinterDialog.addressText)
manualPrinterDialog.hide()
}
enabled: manualPrinterDialog.addressText.trim() != ""

View File

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

View File

@ -39,12 +39,12 @@ class SendMaterialJob(Job):
try:
remote_materials_list = json.loads(remote_materials_list)
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
try:
remote_materials_by_guid = {material["guid"]: material for material in remote_materials_list} #Index by GUID.
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
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
instance_name = "manual:%s" % address
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"firmware_version": system_info["firmware"].encode("utf-8"),
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.
from UM.Job import Job
@ -21,7 +21,6 @@ class AutoDetectBaudJob(Job):
def run(self):
Logger.log("d", "Auto detect baud rate started.")
timeout = 3
wait_response_timeouts = [3, 15, 30]
wait_bootloader_times = [1.5, 5, 15]
write_timeout = 3
@ -52,7 +51,7 @@ class AutoDetectBaudJob(Job):
if serial is None:
try:
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")
continue
else:

View File

@ -15,7 +15,7 @@ from cura.PrinterOutput.GenericOutputController import GenericOutputController
from .AutoDetectBaudJob import AutoDetectBaudJob
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 threading import Thread, Event
@ -146,8 +146,11 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
@pyqtSlot(str)
def updateFirmware(self, file):
# the file path is qurl encoded.
self._firmware_location = file.replace("file://", "")
# the file path could be url-encoded.
if file.startswith("file://"):
self._firmware_location = QUrl(file).toLocalFile()
else:
self._firmware_location = file
self.showFirmwareInterface()
self.setFirmwareUpdateState(FirmwareUpdateState.updating)
self._update_firmware_thread.start()

View File

@ -3026,7 +3026,7 @@
{
"label": "Initial Layer Print Acceleration",
"description": "The acceleration during the printing of the initial layer.",
"unit": "mm/s",
"unit": "mm/s²",
"type": "float",
"default_value": 3000,
"value": "acceleration_layer_0",
@ -3040,7 +3040,7 @@
{
"label": "Initial Layer Travel Acceleration",
"description": "The acceleration for travel moves in the initial layer.",
"unit": "mm/s",
"unit": "mm/s²",
"type": "float",
"default_value": 3000,
"value": "acceleration_layer_0 * acceleration_travel / acceleration_print",
@ -5058,7 +5058,7 @@
"description": "The minimum volume for each layer of the prime tower in order to purge enough material.",
"unit": "mm³",
"type": "float",
"default_value": 5,
"default_value": 6,
"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",
"enabled": "resolveOrValue('prime_tower_enable')",

View File

@ -9,6 +9,7 @@
"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,

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

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

View File

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

View File

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

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.
import QtQuick 2.2
@ -21,8 +21,8 @@ Item
{
id: buttons;
anchors.bottom: parent.bottom;
anchors.left: parent.left;
anchors.bottom: parent.bottom
anchors.left: parent.left
spacing: UM.Theme.getSize("button_lining").width
Repeater
@ -34,20 +34,22 @@ Item
height: childrenRect.height
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
checkable: true
checked: model.active
enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled
style: UM.Theme.styles.tool_button
onCheckedChanged: {
if (checked) {
base.activeY = y
onCheckedChanged:
{
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.
MouseArea
{
@ -57,7 +59,7 @@ Item
forceActiveFocus() //First grab focus, so all the text fields are updated
if(parent.checked)
{
UM.Controller.setActiveTool(null)
UM.Controller.setActiveTool(null);
}
else
{
@ -96,11 +98,13 @@ Item
width:
{
if (panel.item && panel.width > 0){
return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width)
if (panel.item && panel.width > 0)
{
return Math.max(panel.width + 2 * UM.Theme.getSize("default_margin").width);
}
else {
return 0
else
{
return 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;
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;
}
}
@ -148,6 +152,6 @@ Item
anchors.horizontalCenter: parent.horizontalCenter
}
visible: toolHint.text != "";
visible: toolHint.text != ""
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_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_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 15
raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25

View File

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_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_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 15
raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25

View File

@ -40,7 +40,6 @@ material_print_temperature = =default_material_print_temperature + 10
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_min_volume = 20
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_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_id = BB 0.4
machine_nozzle_tip_outer_diameter = 1.0
prime_tower_min_volume = 20
raft_base_speed = 20
raft_interface_speed = 20
raft_speed = 25