Merge branch '2.3' of github.com:Ultimaker/Cura into 2.3

This commit is contained in:
Ghostkeeper 2016-09-09 10:57:51 +02:00
commit b5eb7916c7
No known key found for this signature in database
GPG Key ID: 701948C5954A7385
60 changed files with 171 additions and 1536 deletions

View File

@ -322,6 +322,7 @@ class CuraApplication(QtApplication):
path = Resources.getStoragePath(self.ResourceTypes.VariantInstanceContainer, file_name) path = Resources.getStoragePath(self.ResourceTypes.VariantInstanceContainer, file_name)
if path: if path:
instance.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f: with SaveFile(path, "wt", -1, "utf-8") as f:
f.write(data) f.write(data)
@ -346,6 +347,7 @@ class CuraApplication(QtApplication):
elif stack_type == "extruder_train": elif stack_type == "extruder_train":
path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name) path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name)
if path: if path:
stack.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f: with SaveFile(path, "wt", -1, "utf-8") as f:
f.write(data) f.write(data)

View File

@ -150,6 +150,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
@pyqtSlot(int) @pyqtSlot(int)
def setTargetBedTemperature(self, temperature): def setTargetBedTemperature(self, temperature):
self._setTargetBedTemperature(temperature) self._setTargetBedTemperature(temperature)
if self._target_bed_temperature != temperature:
self._target_bed_temperature = temperature self._target_bed_temperature = temperature
self.targetBedTemperatureChanged.emit() self.targetBedTemperatureChanged.emit()
@ -212,6 +213,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
# This simply sets the bed temperature, but ensures that a signal is emitted. # This simply sets the bed temperature, but ensures that a signal is emitted.
# /param temperature temperature of the bed. # /param temperature temperature of the bed.
def _setBedTemperature(self, temperature): def _setBedTemperature(self, temperature):
if self._bed_temperature != temperature:
self._bed_temperature = temperature self._bed_temperature = temperature
self.bedTemperatureChanged.emit() self.bedTemperatureChanged.emit()
@ -228,6 +230,8 @@ class PrinterOutputDevice(QObject, OutputDevice):
@pyqtSlot(int, int) @pyqtSlot(int, int)
def setTargetHotendTemperature(self, index, temperature): def setTargetHotendTemperature(self, index, temperature):
self._setTargetHotendTemperature(index, temperature) self._setTargetHotendTemperature(index, temperature)
if self._target_hotend_temperatures[index] != temperature:
self._target_hotend_temperatures[index] = temperature self._target_hotend_temperatures[index] = temperature
self.targetHotendTemperaturesChanged.emit() self.targetHotendTemperaturesChanged.emit()
@ -251,6 +255,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
# /param index Index of the hotend # /param index Index of the hotend
# /param temperature temperature of the hotend (in deg C) # /param temperature temperature of the hotend (in deg C)
def _setHotendTemperature(self, index, temperature): def _setHotendTemperature(self, index, temperature):
if self._hotend_temperatures[index] != temperature:
self._hotend_temperatures[index] = temperature self._hotend_temperatures[index] = temperature
self.hotendTemperaturesChanged.emit() self.hotendTemperaturesChanged.emit()
@ -267,7 +272,6 @@ class PrinterOutputDevice(QObject, OutputDevice):
self._material_ids[index] = material_id self._material_ids[index] = material_id
self.materialIdChanged.emit(index, material_id) self.materialIdChanged.emit(index, material_id)
@pyqtProperty("QVariantList", notify = hotendIdChanged) @pyqtProperty("QVariantList", notify = hotendIdChanged)
def hotendIds(self): def hotendIds(self):
return self._hotend_ids return self._hotend_ids
@ -302,6 +306,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
## Set the connection state of this output device. ## Set the connection state of this output device.
# /param connection_state ConnectionState enum. # /param connection_state ConnectionState enum.
def setConnectionState(self, connection_state): def setConnectionState(self, connection_state):
if self._connection_state != connection_state:
self._connection_state = connection_state self._connection_state = connection_state
self.connectionStateChanged.emit(self._id) self.connectionStateChanged.emit(self._id)
@ -351,6 +356,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
if self._head_z != z: if self._head_z != z:
self._head_z = z self._head_z = z
position_changed = True position_changed = True
if position_changed: if position_changed:
self.headPositionChanged.emit() self.headPositionChanged.emit()

View File

@ -167,6 +167,19 @@ class ContainerManager(QObject):
return True return True
@pyqtSlot(str, str, result=str)
def getContainerMetaDataEntry(self, container_id, entry_name):
containers = self._container_registry.findContainers(None, id=container_id)
if not containers:
UM.Logger.log("w", "Could not get metadata of container %s because it was not found.", container_id)
return ""
result = containers[0].getMetaDataEntry(entry_name)
if result:
return result
else:
return ""
## Set a metadata entry of the specified container. ## Set a metadata entry of the specified container.
# #
# This will set the specified entry of the container's metadata to the specified # This will set the specified entry of the container's metadata to the specified
@ -577,6 +590,29 @@ class ContainerManager(QObject):
return new_name return new_name
@pyqtSlot(str, result = str)
def duplicateMaterial(self, material_id):
containers = self._container_registry.findInstanceContainers(id=material_id)
if not containers:
UM.Logger.log("d", "Unable to duplicate the material with id %s, because it doesn't exist.", material_id)
return ""
# Ensure all settings are saved.
UM.Application.getInstance().saveSettings()
# Create a new ID & container to hold the data.
new_id = self._container_registry.uniqueName(material_id)
container_type = type(containers[0]) # Could be either a XMLMaterialProfile or a InstanceContainer
duplicated_container = container_type(new_id)
# Instead of duplicating we load the data from the basefile again.
# This ensures that the inheritance goes well and all "cut up" subclasses of the xmlMaterial profile
# are also correctly created.
with open(containers[0].getPath(), encoding="utf-8") as f:
duplicated_container.deserialize(f.read())
duplicated_container.setDirty(True)
self._container_registry.addContainer(duplicated_container)
# Factory function, used by QML # Factory function, used by QML
@staticmethod @staticmethod
def createContainerManager(engine, js_engine): def createContainerManager(engine, js_engine):

View File

@ -160,7 +160,7 @@ class ExtruderManager(QObject):
def createExtruderTrain(self, extruder_definition, machine_definition, position, machine_id): def createExtruderTrain(self, extruder_definition, machine_definition, position, machine_id):
# Cache some things. # Cache some things.
container_registry = UM.Settings.ContainerRegistry.getInstance() container_registry = UM.Settings.ContainerRegistry.getInstance()
machine_definition_id = machine_definition.getId() machine_definition_id = UM.Application.getInstance().getMachineManager().getQualityDefinitionId(machine_definition)
# Create a container stack for this extruder. # Create a container stack for this extruder.
extruder_stack_id = container_registry.uniqueName(extruder_definition.getId()) extruder_stack_id = container_registry.uniqueName(extruder_definition.getId())
@ -222,7 +222,7 @@ class ExtruderManager(QObject):
search_criteria = { "type": "quality" } search_criteria = { "type": "quality" }
if machine_definition.getMetaDataEntry("has_machine_quality"): if machine_definition.getMetaDataEntry("has_machine_quality"):
search_criteria["definition"] = machine_definition.id search_criteria["definition"] = machine_definition_id
if machine_definition.getMetaDataEntry("has_materials") and material: if machine_definition.getMetaDataEntry("has_materials") and material:
search_criteria["material"] = material.id search_criteria["material"] = material.id
else: else:

View File

@ -430,13 +430,23 @@ class MachineManager(QObject):
return result return result
## Get the Material ID associated with the currently active material
# \returns MaterialID (string) if found, empty string otherwise
@pyqtProperty(str, notify=activeQualityChanged) @pyqtProperty(str, notify=activeQualityChanged)
def activeQualityMaterialId(self): def activeQualityMaterialId(self):
if self._active_container_stack: if self._active_container_stack:
quality = self._active_container_stack.findContainer({"type": "quality"}) quality = self._active_container_stack.findContainer({"type": "quality"})
if quality: if quality:
return quality.getMetaDataEntry("material") material_id = quality.getMetaDataEntry("material")
if material_id:
# if the currently active machine inherits its qualities from a different machine
# definition, make sure to return a material that is relevant to that machine definition
definition_id = self.activeDefinitionId
quality_definition_id = self.activeQualityDefinitionId
if definition_id != quality_definition_id:
material_id = material_id.replace(definition_id, quality_definition_id, 1)
return material_id
return "" return ""
@pyqtProperty(str, notify=activeQualityChanged) @pyqtProperty(str, notify=activeQualityChanged)
@ -594,7 +604,7 @@ class MachineManager(QObject):
criteria["material"] = material.getId() criteria["material"] = material.getId()
if self._global_container_stack.getMetaDataEntry("has_machine_quality"): if self._global_container_stack.getMetaDataEntry("has_machine_quality"):
criteria["definition"] = self._global_container_stack.getBottom().getId() criteria["definition"] = self.activeQualityDefinitionId
else: else:
criteria["definition"] = "fdmprinter" criteria["definition"] = "fdmprinter"
@ -685,6 +695,51 @@ class MachineManager(QObject):
return "" return ""
## Get the Definition ID to use to select quality profiles for the currently active machine
# \returns DefinitionID (string) if found, empty string otherwise
# \sa getQualityDefinitionId
@pyqtProperty(str, notify = globalContainerChanged)
def activeQualityDefinitionId(self):
if self._global_container_stack:
return self.getQualityDefinitionId(self._global_container_stack.getBottom())
return ""
## Get the Definition ID to use to select quality profiles for machines of the specified definition
# This is normally the id of the definition itself, but machines can specify a different definition to inherit qualities from
# \param definition (DefinitionContainer) machine definition
# \returns DefinitionID (string) if found, empty string otherwise
def getQualityDefinitionId(self, definition):
definition_id = definition.getMetaDataEntry("quality_definition")
if not definition_id:
definition_id = definition.getId()
return definition_id
## Get the Variant ID to use to select quality profiles for the currently active variant
# \returns VariantID (string) if found, empty string otherwise
# \sa getQualityVariantId
@pyqtProperty(str, notify = activeVariantChanged)
def activeQualityVariantId(self):
if self._global_container_stack:
variant = self._global_container_stack.findContainer({"type": "variant"})
if variant:
return self.getQualityVariantId(self._global_container_stack.getBottom(), variant)
return ""
## Get the Variant ID to use to select quality profiles for variants of the specified definitions
# This is normally the id of the variant itself, but machines can specify a different definition
# to inherit qualities from, which has consequences for the variant to use as well
# \param definition (DefinitionContainer) machine definition
# \param variant (DefinitionContainer) variant definition
# \returns VariantID (string) if found, empty string otherwise
def getQualityVariantId(self, definition, variant):
variant_id = variant.getId()
definition_id = definition.getId()
quality_definition_id = self.getQualityDefinitionId(definition)
if definition_id != quality_definition_id:
variant_id = variant_id.replace(definition_id, quality_definition_id, 1)
return variant_id
## Gets how the active definition calls variants ## Gets how the active definition calls variants
# Caveat: per-definition-variant-title is currently not translated (though the fallback is) # Caveat: per-definition-variant-title is currently not translated (though the fallback is)
@pyqtProperty(str, notify = globalContainerChanged) @pyqtProperty(str, notify = globalContainerChanged)
@ -789,10 +844,10 @@ class MachineManager(QObject):
search_criteria = { "type": "material" } search_criteria = { "type": "material" }
if definition.getMetaDataEntry("has_machine_materials"): if definition.getMetaDataEntry("has_machine_materials"):
search_criteria["definition"] = definition.id search_criteria["definition"] = self.getQualityDefinitionId(definition)
if definition.getMetaDataEntry("has_variants") and variant_container: if definition.getMetaDataEntry("has_variants") and variant_container:
search_criteria["variant"] = variant_container.id search_criteria["variant"] = self.getQualityVariantId(definition, variant_container)
else: else:
search_criteria["definition"] = "fdmprinter" search_criteria["definition"] = "fdmprinter"
@ -823,7 +878,7 @@ class MachineManager(QObject):
search_criteria = { "type": "quality" } search_criteria = { "type": "quality" }
if definition.getMetaDataEntry("has_machine_quality"): if definition.getMetaDataEntry("has_machine_quality"):
search_criteria["definition"] = definition.id search_criteria["definition"] = self.getQualityDefinitionId(definition)
if definition.getMetaDataEntry("has_materials") and material_container: if definition.getMetaDataEntry("has_materials") and material_container:
search_criteria["material"] = material_container.id search_criteria["material"] = material_container.id
@ -866,10 +921,10 @@ class MachineManager(QObject):
if definition.getMetaDataEntry("has_variants"): if definition.getMetaDataEntry("has_variants"):
material_search_criteria["variant"] = material_container.getMetaDataEntry("variant") material_search_criteria["variant"] = material_container.getMetaDataEntry("variant")
else: else:
material_search_criteria["definition"] = definition.id material_search_criteria["definition"] = self.getQualityDefinitionId(definition)
if definition.getMetaDataEntry("has_variants") and variant_container: if definition.getMetaDataEntry("has_variants") and variant_container:
material_search_criteria["variant"] = variant_container.id material_search_criteria["variant"] = self.getQualityVariantId(definition, variant_container)
else: else:
material_search_criteria["definition"] = "fdmprinter" material_search_criteria["definition"] = "fdmprinter"
material_containers = container_registry.findInstanceContainers(**material_search_criteria) material_containers = container_registry.findInstanceContainers(**material_search_criteria)

View File

@ -71,7 +71,7 @@ class ThreeMFReader(MeshReader):
rotation.setByRotationAxis(-0.5 * math.pi, Vector(1, 0, 0)) rotation.setByRotationAxis(-0.5 * math.pi, Vector(1, 0, 0))
# TODO: We currently do not check for normals and simply recalculate them. # TODO: We currently do not check for normals and simply recalculate them.
mesh_builder.calculateNormals() mesh_builder.calculateNormals(flip = True)
mesh_builder.setFileName(file_name) mesh_builder.setFileName(file_name)
node.setMeshData(mesh_builder.build().getTransformed(rotation)) node.setMeshData(mesh_builder.build().getTransformed(rotation))
node.setSelectable(True) node.setSelectable(True)

View File

@ -27,7 +27,7 @@ class CuraProfileReader(ProfileReader):
# returned. # returned.
def read(self, file_name): def read(self, file_name):
try: try:
archive = zipfile.ZipFile(file_name, "r") with zipfile.ZipFile(file_name, "r") as archive:
results = [] results = []
for profile_id in archive.namelist(): for profile_id in archive.namelist():
with archive.open(profile_id) as f: with archive.open(profile_id) as f:

View File

@ -77,7 +77,10 @@ class PerObjectSettingsTool(Tool):
if not self._multi_extrusion: if not self._multi_extrusion:
default_stack_id = global_container_stack.getId() default_stack_id = global_container_stack.getId()
else: else:
default_stack_id = ExtruderManager.getInstance().getExtruderStack(0).getId() default_stack = ExtruderManager.getInstance().getExtruderStack(0)
if default_stack:
default_stack_id = default_stack.getId()
else: default_stack_id = global_container_stack.getId()
root_node = Application.getInstance().getController().getScene().getRoot() root_node = Application.getInstance().getController().getScene().getRoot()
for node in DepthFirstIterator(root_node): for node in DepthFirstIterator(root_node):

View File

@ -51,6 +51,8 @@ class SolidView(View):
if multi_extrusion: if multi_extrusion:
support_extruder_nr = global_container_stack.getProperty("support_extruder_nr", "value") support_extruder_nr = global_container_stack.getProperty("support_extruder_nr", "value")
support_angle_stack = ExtruderManager.getInstance().getExtruderStack(support_extruder_nr) support_angle_stack = ExtruderManager.getInstance().getExtruderStack(support_extruder_nr)
if not support_angle_stack:
support_angle_stack = global_container_stack
else: else:
support_angle_stack = global_container_stack support_angle_stack = global_container_stack

View File

@ -22,35 +22,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
super().__init__(container_id, *args, **kwargs) super().__init__(container_id, *args, **kwargs)
self._inherited_files = [] self._inherited_files = []
## Overridden from InstanceContainer
def duplicate(self, new_id, new_name = None):
base_file = self.getMetaDataEntry("base_file", None)
if base_file != self.id:
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = base_file)
if containers:
new_basefile = containers[0].duplicate(self.getMetaDataEntry("brand") + "_" + new_id, new_name)
base_file = new_basefile.id
UM.Settings.ContainerRegistry.getInstance().addContainer(new_basefile)
new_id = self.getMetaDataEntry("brand") + "_" + new_id + "_" + self.getDefinition().getId()
variant = self.getMetaDataEntry("variant")
if variant:
variant_containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = variant)
if variant_containers:
new_id += "_" + variant_containers[0].getName().replace(" ", "_")
has_base_file = True
else:
has_base_file = False
new_id = UM.Settings.ContainerRegistry.getInstance().createUniqueName("material", self._id, new_id, "")
result = super().duplicate(new_id, new_name)
if has_base_file:
result.setMetaDataEntry("base_file", base_file)
else:
result.setMetaDataEntry("base_file", result.id)
return result
def getInheritedFiles(self): def getInheritedFiles(self):
return self._inherited_files return self._inherited_files
@ -63,6 +34,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
container._read_only = read_only # prevent loop instead of calling setReadOnly container._read_only = read_only # prevent loop instead of calling setReadOnly
## Overridden from InstanceContainer ## Overridden from InstanceContainer
# set the meta data for all machine / variant combinations
def setMetaDataEntry(self, key, value): def setMetaDataEntry(self, key, value):
if self.isReadOnly(): if self.isReadOnly():
return return
@ -103,10 +75,17 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
# #
# basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is self.id, this is a basefile. # basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is self.id, this is a basefile.
# for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile): # for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile):
# container._dirty = True # if not container.isReadOnly():
# container.setDirty(True)
## Overridden from InstanceContainer ## Overridden from InstanceContainer
# base file: global settings + supported machines
# machine / variant combination: only changes for itself.
def serialize(self): def serialize(self):
if self._read_only:
Logger.log("w", "Serializing read-only container [%s], probably a programming error." % self.id)
return
registry = UM.Settings.ContainerRegistry.getInstance() registry = UM.Settings.ContainerRegistry.getInstance()
base_file = self.getMetaDataEntry("base_file", "") base_file = self.getMetaDataEntry("base_file", "")
@ -114,7 +93,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
# Since we create an instance of XmlMaterialProfile for each machine and nozzle in the profile, # Since we create an instance of XmlMaterialProfile for each machine and nozzle in the profile,
# we should only serialize the "base" material definition, since that can then take care of # we should only serialize the "base" material definition, since that can then take care of
# serializing the machine/nozzle specific profiles. # serializing the machine/nozzle specific profiles.
raise NotImplementedError("Cannot serialize non-root XML materials") raise NotImplementedError("Ignoring serializing non-root XML materials, the data is contained in the base material")
builder = ET.TreeBuilder() builder = ET.TreeBuilder()
@ -528,7 +507,9 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
# Change the type of this container so it is not shown as an option in menus. # Change the type of this container so it is not shown as an option in menus.
# This uses InstanceContainer.setMetaDataEntry because otherwise all containers that # This uses InstanceContainer.setMetaDataEntry because otherwise all containers that
# share this basefile are also updated. # share this basefile are also updated.
dirty = self.isDirty()
super().setMetaDataEntry("type", "incompatible_material") super().setMetaDataEntry("type", "incompatible_material")
super().setDirty(dirty) # reset dirty flag after setMetaDataEntry
def _addSettingElement(self, builder, instance): def _addSettingElement(self, builder, instance):
try: try:

View File

@ -2478,19 +2478,6 @@
"enabled": "support_enable", "enabled": "support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_area_smoothing":
{
"label": "Support Area Smoothing",
"description": "Maximum distance in the X/Y directions of a line segment which is to be smoothed out. Ragged lines are introduced by the join distance and support bridge, which cause the machine to resonate. Smoothing the support areas won't cause them to break with the constraints, except it might change the overhang.",
"unit": "mm",
"type": "float",
"default_value": 0.6,
"global_inherits_stack": "support_extruder_nr",
"minimum_value": "0",
"maximum_value_warning": "1.0",
"enabled": "support_enable",
"settable_per_mesh": true
},
"support_interface_enable": "support_interface_enable":
{ {
"label": "Enable Support Interface", "label": "Enable Support Interface",
@ -2546,6 +2533,19 @@
} }
} }
}, },
"support_interface_skip_height":
{
"label": "Support Interface Resolution",
"description": "When checking where there's model above the support, take steps of the given height. Lower values will slice slower, while higher values may cause normal support to be printed in some places where there should have been support interface.",
"unit": "mm",
"type": "float",
"default_value": 0.3,
"minimum_value": "0",
"global_inherits_stack": "support_extruder_nr",
"maximum_value_warning": "support_interface_height",
"enabled": "extruderValue(support_extruder_nr, 'support_interface_enable') and support_enable",
"settable_per_mesh": true
},
"support_interface_density": "support_interface_density":
{ {
"label": "Support Interface Density", "label": "Support Interface Density",

View File

@ -7,6 +7,7 @@
"author": "Ultimaker", "author": "Ultimaker",
"manufacturer": "Ultimaker", "manufacturer": "Ultimaker",
"category": "Ultimaker", "category": "Ultimaker",
"quality_definition": "ultimaker2_plus",
"weight": 2, "weight": 2,
"file_formats": "text/x-gcode", "file_formats": "text/x-gcode",
"platform": "ultimaker2_platform.obj", "platform": "ultimaker2_platform.obj",
@ -17,15 +18,6 @@
"overrides": { "overrides": {
"machine_height": { "machine_height": {
"default_value": 305 "default_value": 305
},
"machine_show_variants": {
"default_value": true
},
"machine_nozzle_head_distance": {
"default_value": 5
},
"machine_nozzle_expansion_angle": {
"default_value": 45
} }
} }
} }

View File

@ -106,10 +106,10 @@ Menu
var result = { "type": "material" }; var result = { "type": "material" };
if(Cura.MachineManager.filterMaterialsByMachine) if(Cura.MachineManager.filterMaterialsByMachine)
{ {
result.definition = Cura.MachineManager.activeDefinitionId; result.definition = Cura.MachineManager.activeQualityDefinitionId;
if(Cura.MachineManager.hasVariants) if(Cura.MachineManager.hasVariants)
{ {
result.variant = Cura.MachineManager.activeVariantId; result.variant = Cura.MachineManager.activeQualityVariantId;
} }
} }
else else

View File

@ -38,7 +38,7 @@ Menu
id: customProfileInstantiator id: customProfileInstantiator
model: UM.InstanceContainersModel model: UM.InstanceContainersModel
{ {
filter: { "type": "quality_changes", "extruder": null, "definition": Cura.MachineManager.filterQualityByMachine ? Cura.MachineManager.activeDefinitionId : "fdmprinter" }; filter: { "type": "quality_changes", "extruder": null, "definition": Cura.MachineManager.filterQualityByMachine ? Cura.MachineManager.activeQualityDefinitionId : "fdmprinter" };
onModelReset: customSeparator.visible = rowCount() > 0 onModelReset: customSeparator.visible = rowCount() > 0
} }
@ -79,7 +79,7 @@ Menu
if(Cura.MachineManager.filterQualityByMachine) if(Cura.MachineManager.filterQualityByMachine)
{ {
result.definition = Cura.MachineManager.activeDefinitionId; result.definition = Cura.MachineManager.activeQualityDefinitionId;
if(Cura.MachineManager.hasMaterials) if(Cura.MachineManager.hasMaterials)
{ {
result.material = Cura.MachineManager.activeQualityMaterialId; result.material = Cura.MachineManager.activeQualityMaterialId;

View File

@ -129,7 +129,6 @@ UM.ManagementPage
enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId
onClicked: Cura.MachineManager.setActiveMaterial(base.currentItem.id) onClicked: Cura.MachineManager.setActiveMaterial(base.currentItem.id)
}, },
/* // apparently visible does not work on OS X
Button Button
{ {
text: catalog.i18nc("@action:button", "Duplicate"); text: catalog.i18nc("@action:button", "Duplicate");
@ -137,24 +136,17 @@ UM.ManagementPage
enabled: base.currentItem != null enabled: base.currentItem != null
onClicked: onClicked:
{ {
var material_id = Cura.ContainerManager.duplicateContainer(base.currentItem.id) var base_file = Cura.ContainerManager.getContainerMetaDataEntry(base.currentItem.id, "base_file")
// We need to copy the base container instead of the specific variant.
var material_id = base_file == "" ? Cura.ContainerManager.duplicateMaterial(base.currentItem.id): Cura.ContainerManager.duplicateMaterial(base_file)
if(material_id == "") if(material_id == "")
{ {
return return
} }
if(Cura.MachineManager.filterQualityByMachine)
{
var quality_id = Cura.ContainerManager.duplicateContainer(Cura.MachineManager.activeQualityId)
Cura.ContainerManager.setContainerMetaDataEntry(quality_id, "material", material_id)
Cura.MachineManager.setActiveQuality(quality_id)
}
Cura.MachineManager.setActiveMaterial(material_id) Cura.MachineManager.setActiveMaterial(material_id)
} }
visible: false;
}, },
*/
Button Button
{ {
text: catalog.i18nc("@action:button", "Remove"); text: catalog.i18nc("@action:button", "Remove");
@ -162,15 +154,13 @@ UM.ManagementPage
enabled: base.currentItem != null && !base.currentItem.readOnly && !Cura.ContainerManager.isContainerUsed(base.currentItem.id) enabled: base.currentItem != null && !base.currentItem.readOnly && !Cura.ContainerManager.isContainerUsed(base.currentItem.id)
onClicked: confirmDialog.open() onClicked: confirmDialog.open()
}, },
/* // apparently visible does not work on OS X
Button Button
{ {
text: catalog.i18nc("@action:button", "Import"); text: catalog.i18nc("@action:button", "Import");
iconName: "document-import"; iconName: "document-import";
onClicked: importDialog.open(); onClicked: importDialog.open();
visible: false; visible: true;
}, },
*/
Button Button
{ {
text: catalog.i18nc("@action:button", "Export") text: catalog.i18nc("@action:button", "Export")

View File

@ -23,7 +23,7 @@ UM.ManagementPage
var result = { "type": "quality*", "extruder": null }; var result = { "type": "quality*", "extruder": null };
if(Cura.MachineManager.filterQualityByMachine) if(Cura.MachineManager.filterQualityByMachine)
{ {
result.definition = Cura.MachineManager.activeDefinitionId; result.definition = Cura.MachineManager.activeQualityDefinitionId;
if(Cura.MachineManager.hasMaterials) if(Cura.MachineManager.hasMaterials)
{ {
result.material = Cura.MachineManager.allActiveMaterialIds[Cura.MachineManager.activeMachineId]; result.material = Cura.MachineManager.allActiveMaterialIds[Cura.MachineManager.activeMachineId];

View File

@ -138,7 +138,7 @@ Item {
{ {
id: linkedSettingIcon; id: linkedSettingIcon;
visible: Cura.MachineManager.activeStackId != Cura.MachineManager.activeMachineId && !definition.settable_per_extruder && base.showLinkedSettingIcon visible: Cura.MachineManager.activeStackId != Cura.MachineManager.activeMachineId && (!definition.settable_per_extruder || definition.global_inherits_stack != "-1") && base.showLinkedSettingIcon
height: parent.height; height: parent.height;
width: height; width: height;

View File

@ -1,23 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.25_mm
weight = -2
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,26 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -1
quality_type = fast
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 55
speed_wall = 40
speed_topbottom = 30
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,23 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -3
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,22 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -2
quality_type = normal
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,24 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.6_mm
weight = -2
quality_type = normal
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
speed_infill = 55
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_min_speed = 20
cool_min_layer_time_fan_speed_max = 20

View File

@ -1,22 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.8_mm
weight = -2
quality_type = fast
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 25

View File

@ -1,22 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.25_mm
weight = -2
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 2
cool_fan_speed_min = 20
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,26 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -1
quality_type = fast
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 45
speed_wall = 40
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,22 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -3
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 2
cool_fan_speed_min = 80
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,23 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -2
quality_type = normal
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View File

@ -1,21 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.6_mm
weight = -2
quality_type = normal
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 5
cool_fan_speed_min = 80
cool_min_speed = 8
cool_min_layer_time_fan_speed_max = 20

View File

@ -1,21 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.8_mm
weight = -2
quality_type = fast
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 8
cool_min_layer_time_fan_speed_max = 25

View File

@ -1,42 +0,0 @@
[general]
version = 2
name = Draft Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = draft
[values]
speed_wall_x = 25
support_z_distance = 0.26
raft_interface_line_spacing = 1
cool_min_speed = 8
cool_fan_speed = 50
wall_thickness = 1.14
raft_margin = 15
speed_layer_0 = 15
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 0.8
top_bottom_thickness = 1.5
cool_fan_speed_min = 25
raft_surface_line_width = 0.38
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
speed_wall_0 = 20
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
cool_min_layer_time = 3
speed_print = 25
line_width = 0.38
support_angle = 45
raft_base_line_spacing = 1.6
raft_base_line_width = 0.8

View File

@ -1,42 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = normal
[values]
speed_wall_x = 30
support_z_distance = 0.26
raft_interface_line_spacing = 1
cool_min_speed = 8
cool_fan_speed = 50
wall_thickness = 1.14
raft_margin = 15
speed_layer_0 = 15
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.15
raft_interface_line_width = 0.8
top_bottom_thickness = 1.5
cool_fan_speed_min = 25
raft_surface_line_width = 0.38
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
speed_wall_0 = 20
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
cool_min_layer_time = 3
speed_print = 35
line_width = 0.38
support_angle = 45
raft_base_line_spacing = 1.6
raft_base_line_width = 0.8

View File

@ -1,46 +0,0 @@
[general]
version = 2
name = Draft Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = draft
[values]
support_xy_distance = 0.6
speed_travel = 150
support_z_distance = 0.22
speed_wall_x = 25
cool_min_speed = 8
cool_fan_speed = 45
raft_surface_thickness = 0.2
raft_surface_line_width = 0.57
raft_interface_line_spacing = 1.4
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.3
raft_base_line_spacing = 2.4
raft_interface_line_width = 1.2
speed_wall_0 = 20
cool_fan_speed_min = 25
wall_thickness = 1.14
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
infill_sparse_density = 35
top_bottom_thickness = 0.75
adhesion_type = raft
line_width = 0.57
layer_0_z_overlap = 0.22
raft_base_line_width = 1.2
speed_print = 25
support_line_distance = 2.85
support_angle = 45
cool_min_layer_time = 3

View File

@ -1,46 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.6
speed_travel = 150
support_z_distance = 0.22
speed_wall_x = 35
cool_min_speed = 8
cool_fan_speed = 45
raft_surface_thickness = 0.2
raft_surface_line_width = 0.57
raft_interface_line_spacing = 1.4
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.22
raft_base_line_spacing = 2.4
raft_interface_line_width = 1.2
speed_wall_0 = 30
cool_fan_speed_min = 25
wall_thickness = 1.14
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
infill_sparse_density = 35
top_bottom_thickness = 0.75
adhesion_type = raft
line_width = 0.57
layer_0_z_overlap = 0.22
raft_base_line_width = 1.2
speed_print = 35
support_line_distance = 2.85
support_angle = 45
cool_min_layer_time = 3

View File

@ -1,40 +0,0 @@
[general]
version = 2
name = Draft Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = draft
[values]
support_z_distance = 0.26
speed_wall_x = 25
cool_fan_speed = 50
raft_surface_thickness = 0.2
raft_surface_line_width = 0.7
raft_interface_line_spacing = 1.8
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.3
raft_interface_line_width = 1.6
top_bottom_thickness = 1.2
cool_fan_speed_min = 25
brim_line_count = 10
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_base_line_width = 1.6
speed_print = 25
speed_wall_0 = 20
support_angle = 45
cool_min_layer_time = 3
wall_thickness = 2.1

View File

@ -1,40 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_plus_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = normal
[values]
support_z_distance = 0.26
speed_wall_x = 30
cool_fan_speed = 50
raft_surface_thickness = 0.2
raft_surface_line_width = 0.7
raft_interface_line_spacing = 1.8
raft_airgap = 0.37
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 1.6
top_bottom_thickness = 1.2
cool_fan_speed_min = 25
brim_line_count = 10
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_base_line_width = 1.6
speed_print = 30
speed_wall_0 = 20
support_angle = 45
cool_min_layer_time = 3
wall_thickness = 2.1

View File

@ -1,43 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.25_mm
weight = 0
quality_type = high
[values]
support_xy_distance = 0.6
speed_travel = 150
cool_fan_speed = 60
support_z_distance = 0.45
speed_wall_x = 40
cool_min_speed = 15
raft_surface_line_width = 0.2
raft_interface_line_width = 0.5
brim_line_count = 8
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.15
infill_overlap = 5
layer_height = 0.06
raft_interface_line_spacing = 0.7
speed_support = 40
top_bottom_thickness = 1.2
cool_fan_speed_min = 35
wall_thickness = 1
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
speed_wall_0 = 20
adhesion_type = raft
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_base_line_width = 0.5
speed_print = 40

View File

@ -1,43 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.25_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.6
speed_travel = 150
cool_fan_speed = 60
support_z_distance = 0.45
speed_wall_x = 40
cool_min_speed = 15
raft_surface_line_width = 0.2
raft_interface_line_width = 0.5
brim_line_count = 8
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.15
infill_overlap = 5
layer_height = 0.1
raft_interface_line_spacing = 0.7
speed_support = 40
top_bottom_thickness = 1.2
cool_fan_speed_min = 35
wall_thickness = 1
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
speed_wall_0 = 20
adhesion_type = raft
infill_sparse_density = 25
layer_0_z_overlap = 0.1
raft_base_line_width = 0.5
speed_print = 40

View File

@ -1,42 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = fast
[values]
support_xy_distance = 0.6
speed_travel = 150
support_z_distance = 0.45
raft_interface_line_spacing = 1
cool_min_speed = 15
raft_surface_thickness = 0.15
raft_surface_line_width = 0.5
speed_layer_0 = 30
raft_airgap = 0.57
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 0.8
top_bottom_thickness = 0.75
cool_fan_speed_min = 35
wall_thickness = 1.06
support_pattern = lines
support_infill_rate = 25
speed_topbottom = 20
support_enable = True
speed_wall = 40
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_base_line_spacing = 1.6
speed_print = 45
support_angle = 45
cool_min_layer_time = 3
raft_base_line_width = 0.8

View File

@ -1,41 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.6
speed_travel = 150
support_z_distance = 0.45
raft_interface_line_spacing = 1
cool_min_speed = 15
raft_surface_thickness = 0.15
raft_surface_line_width = 0.5
speed_layer_0 = 30
raft_airgap = 0.57
infill_overlap = 5
layer_height = 0.15
raft_interface_line_width = 0.8
top_bottom_thickness = 0.75
cool_fan_speed_min = 35
wall_thickness = 1.06
support_pattern = lines
support_infill_rate = 25
support_enable = True
speed_wall = 40
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
raft_base_line_spacing = 1.6
speed_print = 45
support_angle = 45
cool_min_layer_time = 3
raft_base_line_width = 0.8

View File

@ -1,46 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = fast
[values]
support_xy_distance = 0.7
speed_travel = 150
speed_wall_x = 40
cool_min_speed = 15
support_top_distance = 0.55
raft_surface_line_width = 0.6
raft_surface_thickness = 0.15
brim_line_count = 8
speed_layer_0 = 30
raft_interface_line_spacing = 1.4
infill_overlap = 5
layer_height = 0.3
raft_interface_line_width = 1.2
speed_support = 40
speed_wall_0 = 15
cool_fan_speed_min = 35
wall_thickness = 1.2
support_pattern = lines
support_infill_rate = 25
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
support_bottom_distance = 0.55
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 35
layer_0_z_overlap = 0.22
top_bottom_thickness = 1.2
speed_print = 55
raft_airgap = 0.44
support_angle = 45
raft_base_line_spacing = 2.4
raft_base_line_width = 1.2

View File

@ -1,45 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.7
speed_travel = 150
support_z_distance = 0.55
speed_wall_x = 40
cool_min_speed = 15
raft_surface_line_width = 0.6
raft_surface_thickness = 0.15
brim_line_count = 8
speed_layer_0 = 30
raft_interface_line_spacing = 1.4
infill_overlap = 5
layer_height = 0.15
raft_interface_line_width = 1.2
speed_support = 40
speed_wall_0 = 15
cool_fan_speed_min = 35
wall_thickness = 1.2
support_pattern = lines
support_infill_rate = 25
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 35
layer_0_z_overlap = 0.22
top_bottom_thickness = 1.2
speed_print = 55
raft_airgap = 0.44
support_angle = 45
raft_base_line_spacing = 2.4
raft_base_line_width = 1.2

View File

@ -1,46 +0,0 @@
[general]
version = 2
name = Draft Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = draft
[values]
support_xy_distance = 0.75
speed_travel = 150
support_z_distance = 0.5
speed_wall_x = 40
cool_min_speed = 15
brim_line_count = 8
support_top_distance = 0.5
raft_surface_thickness = 0.2
wall_thickness = 2.4
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.44
infill_overlap = 5
layer_height = 0.3
raft_interface_line_width = 1.6
speed_support = 40
speed_wall_0 = 15
cool_fan_speed_min = 35
raft_surface_line_width = 0.7
support_pattern = lines
support_infill_rate = 25
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
support_bottom_distance = 0.65
top_bottom_thickness = 1.2
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_base_line_width = 1.6
speed_print = 55
support_angle = 45
raft_interface_line_spacing = 1.8

View File

@ -1,46 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_nylon_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.75
speed_travel = 150
support_z_distance = 0.5
speed_wall_x = 40
cool_min_speed = 15
brim_line_count = 8
support_top_distance = 0.5
raft_surface_thickness = 0.2
wall_thickness = 2.4
raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.44
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 1.6
speed_support = 40
speed_wall_0 = 15
cool_fan_speed_min = 35
raft_surface_line_width = 0.7
support_pattern = lines
support_infill_rate = 25
speed_topbottom = 35
support_enable = True
retraction_hop_enabled = 0.2
support_bottom_distance = 0.65
top_bottom_thickness = 1.2
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.25
raft_base_line_width = 1.6
speed_print = 55
support_angle = 45
raft_interface_line_spacing = 1.8

View File

@ -1,36 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.25_mm
weight = 0
quality_type = high
[values]
support_z_distance = 0.19
raft_interface_line_spacing = 0.7
cool_min_speed = 15
cool_fan_speed = 50
raft_surface_line_width = 0.2
wall_thickness = 0.88
raft_airgap = 0.5
infill_overlap = 5
layer_height = 0.06
raft_interface_line_width = 0.5
cool_fan_speed_min = 0
brim_line_count = 32
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 25
layer_0_z_overlap = 0.22
cool_min_layer_time = 2
speed_print = 30
raft_base_line_spacing = 1
raft_base_line_width = 0.5

View File

@ -1,36 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.25_mm
weight = 0
quality_type = normal
[values]
support_z_distance = 0.19
raft_interface_line_spacing = 0.7
cool_min_speed = 15
cool_fan_speed = 50
raft_surface_line_width = 0.2
wall_thickness = 0.88
raft_airgap = 0.5
infill_overlap = 5
layer_height = 0.1
raft_interface_line_width = 0.5
cool_fan_speed_min = 0
brim_line_count = 32
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 25
layer_0_z_overlap = 0.22
cool_min_layer_time = 2
speed_print = 30
raft_base_line_spacing = 1
raft_base_line_width = 0.5

View File

@ -1,37 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = fast
[values]
speed_wall_x = 30
support_z_distance = 0.19
raft_airgap = 0.57
cool_min_speed = 8
cool_fan_speed = 50
raft_interface_line_spacing = 1
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 0.8
speed_wall_0 = 20
cool_fan_speed_min = 0
wall_thickness = 1.2
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
cool_min_layer_time = 3
speed_print = 45
support_angle = 45
raft_base_line_spacing = 1.6
raft_base_line_width = 0.8

View File

@ -1,37 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = normal
[values]
speed_wall_x = 30
support_z_distance = 0.19
raft_airgap = 0.57
cool_min_speed = 8
cool_fan_speed = 50
raft_interface_line_spacing = 1
infill_overlap = 5
layer_height = 0.1
raft_interface_line_width = 0.8
speed_wall_0 = 20
cool_fan_speed_min = 0
wall_thickness = 1.2
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 30
layer_0_z_overlap = 0.22
cool_min_layer_time = 3
speed_print = 45
support_angle = 45
raft_base_line_spacing = 1.6
raft_base_line_width = 0.8

View File

@ -1,44 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = fast
[values]
speed_travel = 150
support_z_distance = 0.21
speed_wall_x = 40
cool_min_speed = 8
cool_fan_speed = 50
raft_surface_thickness = 0.15
raft_surface_line_width = 0.6
raft_interface_line_spacing = 1.4
speed_layer_0 = 30
raft_airgap = 0.52
infill_overlap = 5
layer_height = 0.3
raft_interface_line_width = 1.2
raft_margin = 15
cool_fan_speed_min = 0
wall_thickness = 1.06
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
top_bottom_thickness = 0.75
adhesion_type = raft
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_base_line_spacing = 2.4
speed_print = 45
support_line_distance = 3.5333
speed_wall_0 = 30
support_angle = 45
cool_min_layer_time = 3
raft_base_line_width = 1.2

View File

@ -1,44 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = normal
[values]
speed_travel = 150
support_z_distance = 0.21
speed_wall_x = 40
cool_min_speed = 8
cool_fan_speed = 50
raft_surface_thickness = 0.15
raft_surface_line_width = 0.6
raft_interface_line_spacing = 1.4
speed_layer_0 = 30
raft_airgap = 0.52
infill_overlap = 5
layer_height = 0.15
raft_interface_line_width = 1.2
raft_margin = 15
cool_fan_speed_min = 0
wall_thickness = 1.06
support_pattern = lines
support_infill_rate = 20
speed_topbottom = 20
support_enable = True
top_bottom_thickness = 0.75
adhesion_type = raft
infill_sparse_density = 35
layer_0_z_overlap = 0.22
raft_base_line_spacing = 2.4
speed_print = 45
support_line_distance = 3.5333
speed_wall_0 = 30
support_angle = 45
cool_min_layer_time = 3
raft_base_line_width = 1.2

View File

@ -1,37 +0,0 @@
[general]
version = 2
name = Draft Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = draft
[values]
support_z_distance = 0.26
raft_airgap = 0.47
cool_fan_speed = 50
raft_surface_line_width = 0.7
raft_surface_thickness = 0.2
brim_line_count = 10
raft_interface_line_spacing = 1.8
infill_overlap = 5
layer_height = 0.5
raft_interface_line_width = 1.6
top_bottom_thickness = 2.0
cool_fan_speed_min = 25
wall_thickness = 2.1
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_base_line_width = 1.6
speed_print = 40
support_angle = 45
cool_min_layer_time = 3

View File

@ -1,37 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pc_ultimaker2_extended_plus_0.8_mm
weight = 0
quality_type = normal
[values]
support_z_distance = 0.26
raft_airgap = 0.47
cool_fan_speed = 50
raft_surface_line_width = 0.7
raft_surface_thickness = 0.2
brim_line_count = 10
raft_interface_line_spacing = 1.8
infill_overlap = 5
layer_height = 0.2
raft_interface_line_width = 1.6
top_bottom_thickness = 1.2
cool_fan_speed_min = 25
wall_thickness = 2.1
support_pattern = lines
support_infill_rate = 20
support_enable = True
raft_margin = 15
adhesion_type = raft
infill_sparse_density = 40
layer_0_z_overlap = 0.22
raft_base_line_width = 1.6
speed_print = 40
support_angle = 45
cool_min_layer_time = 3

View File

@ -1,19 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.25_mm
weight = -2
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,21 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -1
quality_type = fast
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 60
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,19 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -3
quality_type = high
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 50
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,19 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -2
quality_type = normal
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 50
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,19 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
material = generic_pla_ultimaker2_extended_plus_0.6_mm
type = quality
weight = -2
quality_type = normal
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 55
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,19 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
material = generic_pla_ultimaker2_extended_plus_0.8_mm
type = quality
weight = -2
quality_type = fast
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 5
cool_min_speed = 10

View File

@ -1,42 +0,0 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_tpu_ultimaker2_extended_plus_0.25_mm
weight = 0
quality_type = high
[values]
support_xy_distance = 0.6
cool_min_speed = 15
support_infill_rate = 25
speed_wall_0 = 15
layer_0_z_overlap = 0.1
cool_min_layer_time = 7
speed_layer_0 = 30
speed_print = 40
wall_thickness = 0.88
support_enable = True
speed_topbottom = 35
raft_surface_line_width = 0.2
raft_base_line_spacing = 1
top_bottom_thickness = 1.2
layer_height = 0.06
support_angle = 45
infill_sparse_density = 10
cool_fan_speed = 60
speed_travel = 150
speed_support = 40
support_z_distance = 0.45
cool_fan_speed_min = 35
brim_line_count = 8
retraction_hop_enabled = 0.2
speed_wall_x = 38
raft_airgap = 0.2
raft_interface_line_spacing = 1
adhesion_type = brim
raft_interface_line_width = 0.2

View File

@ -1,39 +0,0 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_tpu_ultimaker2_extended_plus_0.4_mm
weight = 0
quality_type = normal
[values]
support_xy_distance = 0.65
speed_travel = 150
support_z_distance = 0.45
speed_wall_x = 35
cool_min_speed = 15
cool_fan_speed = 60
retraction_hop_enabled = 0.2
brim_line_count = 8
speed_layer_0 = 30
raft_interface_line_spacing = 1
raft_base_line_spacing = 2
speed_support = 40
raft_margin = 12
cool_fan_speed_min = 35
wall_thickness = 1.05
support_infill_rate = 25
speed_topbottom = 35
support_enable = True
speed_wall_0 = 20
adhesion_type = brim
infill_sparse_density = 10
top_bottom_thickness = 1.2
speed_print = 40
support_angle = 45
cool_min_layer_time = 10
raft_base_line_width = 0.8

View File

@ -1,44 +0,0 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_tpu_ultimaker2_extended_plus_0.6_mm
weight = 0
quality_type = fast
[values]
support_xy_distance = 0.7
raft_base_line_width = 0.6
cool_min_speed = 15
line_width = 0.57
support_infill_rate = 25
speed_wall_0 = 15
wall_thickness = 1.14
raft_base_line_spacing = 1.2
speed_layer_0 = 30
raft_margin = 15
speed_travel = 150
raft_surface_line_width = 0.5
layer_height = 0.12
raft_interface_line_width = 0.57
speed_print = 45
top_bottom_thickness = 1.2
speed_topbottom = 35
layer_0_z_overlap = 0.12
support_angle = 45
infill_sparse_density = 10
cool_fan_speed = 60
speed_support = 40
support_z_distance = 0.45
cool_fan_speed_min = 35
brim_line_count = 8
retraction_hop_enabled = 0.2
speed_wall_x = 40
support_enable = True
raft_interface_line_spacing = 1.2
adhesion_type = brim
raft_airgap = 0.24