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

This commit is contained in:
Ghostkeeper 2016-11-07 11:34:24 +01:00
commit 41595f8025
105 changed files with 2456 additions and 3810 deletions

7
.gitignore vendored
View File

@ -26,3 +26,10 @@ LC_MESSAGES
# Debian packaging
debian*
#Externally located plug-ins.
plugins/Doodle3D-cura-plugin
plugins/GodMode
plugins/PostProcessingPlugin
plugins/UM3NetworkPrinting
plugins/X3GWriter

View File

@ -43,6 +43,8 @@ if(NOT APPLE AND NOT WIN32)
DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura)
install(FILES ${CMAKE_BINARY_DIR}/cura.desktop
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES cura.appdata.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/appdata)
install(FILES cura.sharedmimeinfo
DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
RENAME cura.xml )

31
cura.appdata.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2016 Richard Hughes <richard@hughsie.com> -->
<component type="desktop">
<id>cura.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>AGPL-3.0 and CC-BY-SA-4.0</project_license>
<name>Cura</name>
<summary>The world's most advanced 3d printer software</summary>
<description>
<p>
Cura creates a seamless integration between hardware, software and
materials for the best 3D printing experience around.
Cura supports the 3MF, OBJ and STL file formats and is available on
Windows, Mac and Linux.
</p>
<ul>
<li>Novices can start printing right away</li>
<li>Experts are able to customize 200 settings to achieve the best results</li>
<li>Optimized profiles for Ultimaker materials</li>
<li>Supported by a global network of Ultimaker certified service partners</li>
<li>Print multiple objects at once with different settings for each object</li>
<li>Cura supports STL, 3MF and OBJ file formats</li>
<li>Open source and completely free</li>
</ul>
</description>
<screenshots>
<screenshot type="default" width="1280" height="720">http://software.ultimaker.com/Cura.png</screenshot>
</screenshots>
<url type="homepage">https://ultimaker.com/en/products/cura-software</url>
<translation type="gettext">Cura</translation>
</component>

View File

@ -5,6 +5,7 @@ Name[de]=Cura
GenericName=3D Printing Software
GenericName[de]=3D-Druck-Software
Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
Comment[de]=Cura wandelt 3D-Modelle in Pfade für einen 3D-Drucker um. Es bereitet Ihren Druck für maximale Genauigkeit, minimale Druckzeit und guter Zuverlässigkeit mit vielen zusätzlichen Funktionen vor, damit Ihr Druck großartig wird.
Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F
TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
Icon=@CMAKE_INSTALL_FULL_DATADIR@/cura/resources/images/cura-icon.png

View File

@ -33,6 +33,9 @@ PRIME_CLEARANCE = 1.5
## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas.
class BuildVolume(SceneNode):
VolumeOutlineColor = Color(12, 169, 227, 255)
XAxisColor = Color(255, 0, 0, 255)
YAxisColor = Color(0, 0, 255, 255)
ZAxisColor = Color(0, 255, 0, 255)
raftThicknessChanged = Signal()
@ -45,6 +48,10 @@ class BuildVolume(SceneNode):
self._shader = None
self._origin_mesh = None
self._origin_line_length = 20
self._origin_line_width = 0.5
self._grid_mesh = None
self._grid_shader = None
@ -128,6 +135,7 @@ class BuildVolume(SceneNode):
self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines)
renderer.queueNode(self, mesh = self._origin_mesh)
renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True)
if self._disallowed_area_mesh:
renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9)
@ -170,6 +178,37 @@ class BuildVolume(SceneNode):
self.setMeshData(mb.build())
mb = MeshBuilder()
# Indication of the machine origin
if self._global_container_stack.getProperty("machine_center_is_zero", "value"):
origin = (Vector(min_w, min_h, min_d) + Vector(max_w, min_h, max_d)) / 2
else:
origin = Vector(min_w, min_h, max_d)
mb.addCube(
width = self._origin_line_length,
height = self._origin_line_width,
depth = self._origin_line_width,
center = origin + Vector(self._origin_line_length / 2, 0, 0),
color = self.XAxisColor
)
mb.addCube(
width = self._origin_line_width,
height = self._origin_line_length,
depth = self._origin_line_width,
center = origin + Vector(0, self._origin_line_length / 2, 0),
color = self.YAxisColor
)
mb.addCube(
width = self._origin_line_width,
height = self._origin_line_width,
depth = self._origin_line_length,
center = origin - Vector(0, 0, self._origin_line_length / 2),
color = self.ZAxisColor
)
self._origin_mesh = mb.build()
mb = MeshBuilder()
mb.addQuad(
Vector(min_w, min_h - 0.2, min_d),
@ -481,6 +520,15 @@ class BuildVolume(SceneNode):
def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"):
return self._getSettingFromExtruder(setting_key, "adhesion_extruder_nr", property)
## Private convenience function to get a setting from every extruder.
#
# For single extrusion machines, this gets the setting from the global
# stack.
#
# \return A sequence of setting values, one for each extruder.
def _getSettingFromAllExtruders(self, setting_key, property = "value"):
return ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property)
## Private convenience function to get a setting from the support infill
# extruder.
#
@ -553,7 +601,7 @@ class BuildVolume(SceneNode):
raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?")
support_expansion = 0
if self._getSettingFromSupportInfillExtruder("support_offset"):
if self._getSettingFromSupportInfillExtruder("support_offset") and self._global_container_stack.getProperty("support_enable", "value"):
support_expansion += self._getSettingFromSupportInfillExtruder("support_offset")
farthest_shield_distance = 0
@ -563,10 +611,12 @@ class BuildVolume(SceneNode):
farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value"))
move_from_wall_radius = 0 # Moves that start from outer wall.
if self._getSettingFromAdhesionExtruder("infill_wipe_dist"):
move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist"))
if self._getSettingFromAdhesionExtruder("travel_avoid_distance"):
move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance"))
move_from_wall_radius = max(move_from_wall_radius, max(self._getSettingFromAllExtruders("infill_wipe_dist")))
avoid_enabled_per_extruder = self._getSettingFromAllExtruders(("travel_avoid_other_parts"))
avoid_distance_per_extruder = self._getSettingFromAllExtruders("travel_avoid_distance")
for index, avoid_other_parts_enabled in enumerate(avoid_enabled_per_extruder): #For each extruder (or just global).
if avoid_other_parts_enabled:
move_from_wall_radius = max(move_from_wall_radius, avoid_distance_per_extruder[index]) #Index of the same extruder.
#Now combine our different pieces of data to get the final border size.
#Support expansion is added to the bed adhesion, since the bed adhesion goes around support.
@ -582,4 +632,4 @@ class BuildVolume(SceneNode):
_prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z"]
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"]
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts"]

View File

@ -382,7 +382,7 @@ class CuraApplication(QtApplication):
if path:
instance.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f:
with SaveFile(path, "wt") as f:
f.write(data)
for stack in ContainerRegistry.getInstance().findContainerStacks():
@ -409,7 +409,7 @@ class CuraApplication(QtApplication):
path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name)
if path:
stack.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f:
with SaveFile(path, "wt") as f:
f.write(data)
@ -549,11 +549,12 @@ class CuraApplication(QtApplication):
qmlRegisterType(cura.Settings.ExtrudersModel, "Cura", 1, 0, "ExtrudersModel")
qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel")
qmlRegisterType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel")
qmlRegisterSingletonType(cura.Settings.ProfilesModel, "Cura", 1, 0, "ProfilesModel", cura.Settings.ProfilesModel.createProfilesModel)
qmlRegisterType(cura.Settings.QualityAndUserProfilesModel, "Cura", 1, 0, "QualityAndUserProfilesModel")
qmlRegisterType(cura.Settings.UserProfilesModel, "Cura", 1, 0, "UserProfilesModel")
qmlRegisterType(cura.Settings.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler")
qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel")
qmlRegisterType(cura.Settings.MachineNameValidator, "Cura", 1, 0, "MachineNameValidator")
qmlRegisterSingletonType(cura.Settings.ContainerManager, "Cura", 1, 0, "ContainerManager", cura.Settings.ContainerManager.createContainerManager)

View File

@ -82,7 +82,7 @@ class PlatformPhysics:
# Move it downwards if bottom is above platform
move_vector = Vector()
if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")): #If an object is grouped, don't move it down
if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled(): #If an object is grouped, don't move it down
z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0
move_vector = move_vector.set(y=-bbox.bottom + z_offset)

View File

@ -3,21 +3,22 @@
from UM.Operations.Operation import Operation
from UM.Operations.GroupedOperation import GroupedOperation
from UM.Scene.SceneNode import SceneNode
## A specialised operation designed specifically to modify the previous operation.
class PlatformPhysicsOperation(Operation):
def __init__(self, node, translation):
super().__init__()
self._node = node
self._old_position = node.getPosition()
self._new_position = node.getPosition() + translation
self._old_transformation = node.getLocalTransformation()
self._translation = translation
self._always_merge = True
def undo(self):
self._node.setPosition(self._old_position)
self._node.setTransformation(self._old_transformation)
def redo(self):
self._node.setPosition(self._new_position)
self._node.translate(self._translation, SceneNode.TransformSpace.World)
def mergeWith(self, other):
group = GroupedOperation()
@ -28,4 +29,4 @@ class PlatformPhysicsOperation(Operation):
return group
def __repr__(self):
return "PlatformPhysicsOperation(new_position = {0})".format(self._new_position)
return "PlatformPhysicsOperation(translation = {0})".format(self._translation)

View File

@ -49,7 +49,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
self._printer_state = ""
self._printer_type = "unknown"
def requestWrite(self, node, file_name = None, filter_by_machine = False):
def requestWrite(self, nodes, file_name = None, filter_by_machine = False):
raise NotImplementedError("requestWrite needs to be implemented")
## Signals

View File

@ -27,10 +27,17 @@ class QualityManager:
# specified then the currently selected machine definition is used.
# \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
# the current set of selected materials is used.
# \return the matching quality containers \type{List[ContainerInstance]}
# \return the matching quality container \type{ContainerInstance}
def findQualityByName(self, quality_name, machine_definition=None, material_containers=None):
criteria = {"type": "quality", "name": quality_name}
return self._getFilteredContainersForStack(machine_definition, material_containers, **criteria)
result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria)
# Fall back to using generic materials and qualities if nothing could be found.
if not result and material_containers and len(material_containers) == 1:
basic_materials = self._getBasicMaterials(material_containers[0])
result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
return result[0] if result else None
## Find a quality changes container by name.
#
@ -82,8 +89,9 @@ class QualityManager:
# \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
# the current set of selected materials is used.
# \return the matching quality container \type{ContainerInstance}
def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None):
criteria = {"type": "quality"}
def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None, **kwargs):
criteria = kwargs
criteria["type"] = "quality"
if quality_type:
criteria["quality_type"] = quality_type
result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria)
@ -160,7 +168,8 @@ class QualityManager:
# \return \type{List[InstanceContainer]} a list of the basic materials or an empty list if one could not be found.
def _getBasicMaterials(self, material_container):
base_material = material_container.getMetaDataEntry("material")
if material_container.getDefinition().getMetaDataEntry("has_machine_quality"):
material_container_definition = material_container.getDefinition()
if material_container_definition and material_container_definition.getMetaDataEntry("has_machine_quality"):
definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId())
else:
definition_id = "fdmprinter"
@ -218,7 +227,7 @@ class QualityManager:
result = []
for container in containers:
# If the machine specifies we should filter by material, exclude containers that do not match any active material.
if filter_by_material and container.getMetaDataEntry("material") not in material_ids:
if filter_by_material and container.getMetaDataEntry("material") not in material_ids and not "global_quality" in kwargs:
continue
result.append(container)
return result

View File

@ -32,14 +32,27 @@ class SetParentOperation(Operation.Operation):
# \param new_parent The new parent. Note: this argument can be None, which would hide the node from the scene.
def _set_parent(self, new_parent):
if new_parent:
self._node.setPosition(self._node.getWorldPosition() - new_parent.getWorldPosition())
current_parent = self._node.getParent()
if current_parent:
self._node.scale(current_parent.getScale() / new_parent.getScale())
self._node.rotate(current_parent.getOrientation())
else:
self._node.scale(Vector(1, 1, 1) / new_parent.getScale())
self._node.rotate(new_parent.getOrientation().getInverse())
# Special casing for groups that have been removed.
# In that case we want to put them back where they belong before checking the depth difference.
# If we don't, we always get 0.
old_parent = new_parent.callDecoration("getOldParent")
if old_parent:
new_parent.callDecoration("getNode").setParent(old_parent)
# Based on the depth difference, we need to do something different.
depth_difference = current_parent.getDepth() - new_parent.getDepth()
child_transformation = self._node.getLocalTransformation()
if depth_difference > 0:
parent_transformation = current_parent.getLocalTransformation()
# A node in the chain was removed, so we need to squash the parent info into all the nodes, so positions remain the same.
self._node.setTransformation(parent_transformation.multiply(child_transformation))
else:
# A node is inserted into the chain, so use the inverse of the parent to set the transformation of it's children.
parent_transformation = new_parent.getLocalTransformation()
result = parent_transformation.getInverse().multiply(child_transformation, copy = True)
self._node.setTransformation(result)
self._node.setParent(new_parent)

View File

@ -611,13 +611,12 @@ class ContainerManager(QObject):
if base_name is None:
base_name = quality_name
# Try to find a Quality with the name.
containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances)
if containers:
container = containers[0]
container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances)
if container:
UM.Logger.log("d", "We found a quality to duplicate.")
return self._duplicateQualityForMachineType(container, base_name, machine_definition)
UM.Logger.log("d", "We found a quality_changes to duplicate.")
# Assume it is a quality changes.
return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition)
@ -650,7 +649,10 @@ class ContainerManager(QObject):
new_change_instances = []
for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name,
machine_definition):
new_unique_id = self._createUniqueId(container.getId(), base_name)
base_id = container.getMetaDataEntry("extruder")
if not base_id:
base_id = container.getDefinition().getId()
new_unique_id = self._createUniqueId(base_id, base_name)
new_container = container.duplicate(new_unique_id, base_name)
new_change_instances.append(new_container)
self._container_registry.addContainer(new_container)

View File

@ -165,20 +165,19 @@ class CuraContainerRegistry(ContainerRegistry):
profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader.
except Exception as e:
# Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None.
Logger.log("e", "Failed to import profile from %s: %s while using profile reader", file_name, str(e), profile_reader.getPluginId())
Logger.log("e", "Failed to import profile from %s: %s while using profile reader. Got exception %s", file_name,profile_reader.getPluginId(), str(e))
return { "status": "error", "message": catalog.i18nc("@info:status", "Failed to import profile from <filename>{0}</filename>: <message>{1}</message>", file_name, str(e))}
if profile_or_list: # Success!
name_seed = os.path.splitext(os.path.basename(file_name))[0]
new_name = self.uniqueName(name_seed)
if type(profile_or_list) is not list:
profile = profile_or_list
self._configureProfile(profile, name_seed)
self._configureProfile(profile, name_seed, new_name)
return { "status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile.getName()) }
else:
profile_index = -1
global_profile = None
new_name = self.uniqueName(name_seed)
for profile in profile_or_list:
if profile_index >= 0:
if len(machine_extruders) > profile_index:

View File

@ -50,8 +50,11 @@ class ExtruderManager(QObject):
@pyqtProperty(int, notify = extrudersChanged)
def extruderCount(self):
if not UM.Application.getInstance().getGlobalContainerStack():
return 0 # No active machine, so no extruders.
return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()])
return 0 # No active machine, so no extruders.
try:
return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()])
except KeyError:
return 0
@pyqtProperty("QVariantMap", notify=extrudersChanged)
def extruderIds(self):
@ -265,18 +268,26 @@ class ExtruderManager(QObject):
container_registry.addContainer(container_stack)
def getAllExtruderValues(self, setting_key):
return self.getAllExtruderSettings(setting_key, "value")
## Gets a property of a setting for all extruders.
#
# \param setting_key \type{str} The setting to get the property of.
# \param property \type{str} The property to get.
# \return \type{List} the list of results
def getAllExtruderSettings(self, setting_key, property):
global_container_stack = UM.Application.getInstance().getGlobalContainerStack()
multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1
if not multi_extrusion:
return [global_container_stack.getProperty(setting_key, "value")]
if global_container_stack.getProperty("machine_extruder_count", "value") <= 1:
return [global_container_stack.getProperty(setting_key, property)]
result = []
for index in self.extruderIds:
extruder_stack_id = self.extruderIds[str(index)]
stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0]
result.append(stack.getProperty(setting_key, "value"))
stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
result.append(stack.getProperty(setting_key, property))
return result
## Removes the container stack and user profile for the extruders for a specific machine.
#
# \param machine_id The machine to remove the extruders for.

View File

@ -34,7 +34,7 @@ class MachineManager(QObject):
self.globalContainerChanged.connect(self.activeVariantChanged)
self.globalContainerChanged.connect(self.activeQualityChanged)
self._active_stack_valid = None
self._stacks_have_errors = None
self._onGlobalContainerChanged()
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
@ -74,7 +74,7 @@ class MachineManager(QObject):
self._auto_hotends_changed = {}
self._material_incompatible_message = Message(catalog.i18nc("@info:status",
"The selected material is imcompatible with the selected machine or configuration."))
"The selected material is incompatible with the selected machine or configuration."))
globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value)
activeMaterialChanged = pyqtSignal()
@ -85,6 +85,7 @@ class MachineManager(QObject):
globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed.
activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed.
activeStackValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed
stacksValidationChanged = pyqtSignal() # Emitted whenever a validation is changed
blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly
@ -225,15 +226,36 @@ class MachineManager(QObject):
self._global_container_stack.nameChanged.connect(self._onMachineNameChanged)
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
material = self._global_container_stack.findContainer({"type": "material"})
material.nameChanged.connect(self._onMaterialNameChanged)
quality = self._global_container_stack.findContainer({"type": "quality"})
quality.nameChanged.connect(self._onQualityNameChanged)
if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1:
# For multi-extrusion machines, we do not want variant or material profiles in the stack,
# because these are extruder specific and may cause wrong values to be used for extruders
# that did not specify a value in the extruder.
global_variant = self._global_container_stack.findContainer(type = "variant")
if global_variant != self._empty_variant_container:
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_variant), self._empty_variant_container)
global_material = self._global_container_stack.findContainer(type = "material")
if global_material != self._empty_material_container:
self._global_container_stack.replaceContainer(self._global_container_stack.getContainerIndex(global_material), self._empty_material_container)
else:
material = self._global_container_stack.findContainer({"type": "material"})
material.nameChanged.connect(self._onMaterialNameChanged)
quality = self._global_container_stack.findContainer({"type": "quality"})
quality.nameChanged.connect(self._onQualityNameChanged)
## Update self._stacks_valid according to _checkStacksForErrors and emit if change.
def _updateStacksHaveErrors(self):
old_stacks_have_errors = self._stacks_have_errors
self._stacks_have_errors = self._checkStacksHaveErrors()
if old_stacks_have_errors != self._stacks_have_errors:
self.stacksValidationChanged.emit()
def _onActiveExtruderStackChanged(self):
self.blurSettings.emit() # Ensure no-one has focus.
old_active_container_stack = self._active_container_stack
if self._active_container_stack and self._active_container_stack != self._global_container_stack:
@ -246,10 +268,7 @@ class MachineManager(QObject):
else:
self._active_container_stack = self._global_container_stack
old_active_stack_valid = self._active_stack_valid
self._active_stack_valid = not self._checkStackForErrors(self._active_container_stack)
if old_active_stack_valid != self._active_stack_valid:
self.activeStackValidationChanged.emit()
self._updateStacksHaveErrors()
if old_active_container_stack != self._active_container_stack:
# Many methods and properties related to the active quality actually depend
@ -272,18 +291,18 @@ class MachineManager(QObject):
self.activeStackValueChanged.emit()
if property_name == "validationState":
if self._active_stack_valid:
if not self._stacks_have_errors:
# fast update, we only have to look at the current changed property
if self._active_container_stack.getProperty(key, "settable_per_extruder"):
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
else:
changed_validation_state = self._global_container_stack.getProperty(key, property_name)
if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
self._active_stack_valid = False
self.activeStackValidationChanged.emit()
self._stacks_have_errors = True
self.stacksValidationChanged.emit()
else:
if not self._checkStackForErrors(self._active_container_stack) and not self._checkStackForErrors(self._global_container_stack):
self._active_stack_valid = True
self.activeStackValidationChanged.emit()
# Normal check
self._updateStacksHaveErrors()
@pyqtSlot(str)
def setActiveMachine(self, stack_id):
@ -337,15 +356,17 @@ class MachineManager(QObject):
def _createUniqueName(self, container_type, current_name, new_name, fallback_name):
return UM.Settings.ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name)
## Convenience function to check if a stack has errors.
def _checkStackForErrors(self, stack):
if stack is None:
return False
def _checkStacksHaveErrors(self):
if self._global_container_stack is not None and self._global_container_stack.hasErrors():
return True
for key in stack.getAllKeys():
validation_state = stack.getProperty(key, "validationState")
if validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
if self._global_container_stack is None:
return False
stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
for stack in stacks:
if stack.hasErrors():
return True
return False
## Remove all instances from the top instanceContainer (effectively removing all user-changed settings)
@ -405,12 +426,12 @@ class MachineManager(QObject):
for container in send_emits_containers:
container.sendPostponedEmits()
## Check if the global profile does not contain error states
# Note that the _active_stack_valid is cached due to performance issues
# Calling _checkStackForErrors on every change is simply too expensive
@pyqtProperty(bool, notify = activeStackValidationChanged)
def isActiveStackValid(self):
return bool(self._active_stack_valid)
## Check if none of the stacks contain error states
# Note that the _stacks_have_errors is cached due to performance issues
# Calling _checkStack(s)ForErrors on every change is simply too expensive
@pyqtProperty(bool, notify = stacksValidationChanged)
def stacksHaveErrors(self):
return bool(self._stacks_have_errors)
@pyqtProperty(str, notify = activeStackChanged)
def activeUserProfileId(self):
@ -566,7 +587,7 @@ class MachineManager(QObject):
quality = self._active_container_stack.findContainer(type = "quality")
if quality:
return Util.parseBool(quality.getMetaDataEntry("supported", True))
return ""
return False
## Get the Quality ID associated with the currently active extruder
# Note that this only returns the "quality", not the "quality_changes"
@ -754,6 +775,8 @@ class MachineManager(QObject):
result = []
empty_quality_changes = self._empty_quality_changes_container
global_container_stack = self._global_container_stack
if not global_container_stack:
return []
global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom())
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
@ -769,8 +792,13 @@ class MachineManager(QObject):
if extruder_stacks:
# Add an extra entry for the global stack.
result.append({"stack": global_container_stack, "quality": result[0]["quality"],
"quality_changes": empty_quality_changes})
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True")
if not global_quality:
global_quality = self._empty_quality_container
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": empty_quality_changes})
return result
## Determine the quality and quality changes settings for the current machine for a quality changes name.
@ -793,7 +821,10 @@ class MachineManager(QObject):
# For the global stack, find a quality which matches the quality_type in
# the quality changes profile and also satisfies any material constraints.
quality_type = global_quality_changes.getMetaDataEntry("quality_type")
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
if global_container_stack.getProperty("machine_extruder_count", "value") > 1:
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = True)
else:
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material])
# Find the values for each extruder.
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
@ -814,9 +845,10 @@ class MachineManager(QObject):
result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes})
if extruder_stacks:
# Duplicate the quality from the 1st extruder into the global stack. If anyone
# then looks in the global stack, they should get a reasonable view.
result.append({"stack": global_container_stack, "quality": result[0]["quality"], "quality_changes": global_quality_changes})
global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material], global_quality = "True")
if not global_quality:
global_quality = self._empty_quality_container
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})
else:
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})

View File

@ -0,0 +1,66 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import pyqtSlot, pyqtProperty, QObject, pyqtSignal, QRegExp
from PyQt5.QtGui import QValidator
import os #For statvfs.
import urllib #To escape machine names for how they're saved to file.
import UM.Resources
import UM.Settings.ContainerRegistry
import UM.Settings.InstanceContainer
## Are machine names valid?
#
# Performs checks based on the length of the name.
class MachineNameValidator(QObject):
def __init__(self, parent = None):
super().__init__(parent)
#Compute the validation regex for printer names. This is limited by the maximum file name length.
try:
filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
filename_max_length = 255 #Assume it's Windows on NTFS.
machine_name_max_length = filename_max_length - len("_current_settings.") - len(UM.Settings.ContainerRegistry.getMimeTypeForContainer(UM.Settings.InstanceContainer).preferredSuffix)
# Characters that urllib.parse.quote_plus escapes count for 12! So now
# we must devise a regex that allows only 12 normal characters or 1
# special character, and that up to [machine_name_max_length / 12] times.
maximum_special_characters = int(machine_name_max_length / 12)
unescaped = r"[a-zA-Z0-9_\-\.\/]"
self.machine_name_regex = r"^((" + unescaped + "){0,12}|.){0," + str(maximum_special_characters) + r"}$"
validationChanged = pyqtSignal()
## Check if a specified machine name is allowed.
#
# \param name The machine name to check.
# \param position The current position of the cursor in the text box.
# \return ``QValidator.Invalid`` if it's disallowed, or
# ``QValidator.Acceptable`` if it's allowed.
def validate(self, name, position):
#Check for file name length of the current settings container (which is the longest file we're saving with the name).
try:
filename_max_length = os.statvfs(UM.Resources.getDataStoragePath()).f_namemax
except AttributeError: #Doesn't support statvfs. Probably because it's not a Unix system.
filename_max_length = 255 #Assume it's Windows on NTFS.
escaped_name = urllib.parse.quote_plus(name)
current_settings_filename = escaped_name + "_current_settings." + UM.Settings.ContainerRegistry.getMimeTypeForContainer(UM.Settings.InstanceContainer).preferredSuffix
if len(current_settings_filename) > filename_max_length:
return QValidator.Invalid
return QValidator.Acceptable #All checks succeeded.
## Updates the validation state of a machine name text field.
@pyqtSlot(str)
def updateValidation(self, new_name):
is_valid = self.validate(new_name, 0)
if is_valid == QValidator.Acceptable:
self.validation_regex = "^.*$" #Matches anything.
else:
self.validation_regex = "a^" #Never matches (unless you manage to get "a" before the start of the string... good luck).
self.validationChanged.emit()
@pyqtProperty("QRegExp", notify=validationChanged)
def machineNameRegex(self):
return QRegExp(self.machine_name_regex)

View File

@ -25,6 +25,21 @@ class ProfilesModel(InstanceContainersModel):
Application.getInstance().getMachineManager().activeStackChanged.connect(self._update)
Application.getInstance().getMachineManager().activeMaterialChanged.connect(self._update)
# Factory function, used by QML
@staticmethod
def createProfilesModel(engine, js_engine):
return ProfilesModel.getInstance()
## Get the singleton instance for this class.
@classmethod
def getInstance(cls):
# Note: Explicit use of class name to prevent issues with inheritance.
if ProfilesModel.__instance is None:
ProfilesModel.__instance = cls()
return ProfilesModel.__instance
__instance = None
## Fetch the list of containers to display.
#
# See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers().
@ -56,6 +71,8 @@ class ProfilesModel(InstanceContainersModel):
machine_manager = Application.getInstance().getMachineManager()
unit = global_container_stack.getBottom().getProperty("layer_height", "unit")
if not unit:
unit = ""
for item in super()._recomputeItems():
profile = container_registry.findContainers(id = item["id"])
@ -80,7 +97,10 @@ class ProfilesModel(InstanceContainersModel):
quality = quality_result["quality"]
break
else: #No global container stack in the results:
quality = quality_results[0]["quality"] #Take any of the extruders.
if quality_results:
quality = quality_results[0]["quality"] #Take any of the extruders.
else:
quality = None
if quality and quality.hasProperty("layer_height", "value"):
item["layer_height"] = str(quality.getProperty("layer_height", "value")) + unit
yield item

View File

@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
import UM.Settings
from UM.Application import Application
import cura.Settings
from UM.Logger import Logger
## The settingInheritance manager is responsible for checking each setting in order to see if one of the "deeper"
@ -38,6 +39,26 @@ class SettingInheritanceManager(QObject):
result.append(key)
return result
@pyqtSlot(str, str, result = "QStringList")
def getOverridesForExtruder(self, key, extruder_index):
multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1
if not multi_extrusion:
return self._settings_with_inheritance_warning
extruder = cura.Settings.ExtruderManager.getInstance().getExtruderStack(extruder_index)
if not extruder:
Logger.log("w", "Unable to find extruder for current machine with index %s", extruder_index)
return []
definitions = self._global_container_stack.getBottom().findDefinitions(key=key)
if not definitions:
return
result = []
for key in definitions[0].getAllKeys():
if self._settingIsOverwritingInheritance(key, extruder):
result.append(key)
return result
@pyqtSlot(str)
def manualRemoveOverride(self, key):
if key in self._settings_with_inheritance_warning:
@ -56,9 +77,11 @@ class SettingInheritanceManager(QObject):
if new_active_stack != self._active_container_stack: # Check if changed
if self._active_container_stack: # Disconnect signal from old container (if any)
self._active_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
self._active_container_stack.containersChanged.disconnect(self._onContainersChanged)
self._active_container_stack = new_active_stack
self._active_container_stack.propertyChanged.connect(self._onPropertyChanged)
self._active_container_stack.containersChanged.connect(self._onContainersChanged)
self._update() # Ensure that the settings_with_inheritance_warning list is populated.
def _onPropertyChanged(self, key, property_name):
@ -113,22 +136,23 @@ class SettingInheritanceManager(QObject):
return self._settings_with_inheritance_warning
## Check if a setting has an inheritance function that is overwritten
def _settingIsOverwritingInheritance(self, key):
def _settingIsOverwritingInheritance(self, key, stack = None):
has_setting_function = False
stack = self._active_container_stack
if not stack:
stack = self._active_container_stack
containers = []
## Check if the setting has a user state. If not, it is never overwritten.
has_user_state = self._active_container_stack.getProperty(key, "state") == UM.Settings.InstanceState.User
has_user_state = stack.getProperty(key, "state") == UM.Settings.InstanceState.User
if not has_user_state:
return False
## If a setting is not enabled, don't label it as overwritten (It's never visible anyway).
if not self._active_container_stack.getProperty(key, "enabled"):
if not stack.getProperty(key, "enabled"):
return False
## Also check if the top container is not a setting function (this happens if the inheritance is restored).
if isinstance(self._active_container_stack.getTop().getProperty(key, "value"), UM.Settings.SettingFunction):
if isinstance(stack.getTop().getProperty(key, "value"), UM.Settings.SettingFunction):
return False
## Mash all containers for all the stacks together.
@ -178,8 +202,10 @@ class SettingInheritanceManager(QObject):
self._onActiveExtruderChanged()
def _onContainersChanged(self, container):
self._onActiveExtruderChanged()
# TODO: Multiple container changes in sequence now cause quite a few recalculations.
# This isn't that big of an issue, but it could be in the future.
self._update()
@staticmethod
def createSettingInheritanceManager(engine=None, script_engine=None):
return SettingInheritanceManager()
return SettingInheritanceManager()

View File

@ -61,6 +61,15 @@ class SettingOverrideDecorator(SceneNodeDecorator):
def getActiveExtruder(self):
return self._extruder_stack
## Gets the currently active extruders position
#
# \return An extruder's position, or None if no position info is available.
def getActiveExtruderPosition(self):
containers = ContainerRegistry.getInstance().findContainers(id = self.getActiveExtruder())
if containers:
container_stack = containers[0]
return container_stack.getMetaDataEntry("position", default=None)
def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function
if property_name == "value": # Only reslice if the value has changed.
Application.getInstance().getBackend().forceSlice()

View File

@ -8,6 +8,7 @@ from .CuraContainerRegistry import CuraContainerRegistry
from .ExtruderManager import ExtruderManager
from .ExtrudersModel import ExtrudersModel
from .MachineManager import MachineManager
from .MachineNameValidator import MachineNameValidator
from .MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler
from .SettingOverrideDecorator import SettingOverrideDecorator
from .QualitySettingsModel import QualitySettingsModel

BIN
docs/Cura_Data_Model.odg Normal file

Binary file not shown.

View File

@ -11,9 +11,8 @@ from UM.Scene.GroupDecorator import GroupDecorator
import UM.Application
from UM.Job import Job
from UM.Math.Quaternion import Quaternion
import math
import os.path
import zipfile
try:
@ -31,9 +30,12 @@ class ThreeMFReader(MeshReader):
"3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02",
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
}
self._base_name = ""
self._unit = None
def _createNodeFromObject(self, object, name = ""):
node = SceneNode()
node.setName(name)
mesh_builder = MeshBuilder()
vertex_list = []
@ -42,8 +44,7 @@ class ThreeMFReader(MeshReader):
for component in components:
id = component.get("objectid")
new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
new_node = self._createNodeFromObject(new_object)
new_node = self._createNodeFromObject(new_object, self._base_name + "_" + str(id))
node.addChild(new_node)
transform = component.get("transform")
if transform is not None:
@ -54,10 +55,6 @@ class ThreeMFReader(MeshReader):
vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")])
Job.yieldThread()
# If this object has no vertices and just one child, just return the child.
if len(vertex_list) == 0 and len(node.getChildren()) == 1:
return node.getChildren()[0]
if len(node.getChildren()) > 0:
group_decorator = GroupDecorator()
node.addDecorator(group_decorator)
@ -76,20 +73,10 @@ class ThreeMFReader(MeshReader):
Job.yieldThread()
# Rotate the model; We use a different coordinate frame.
rotation = Matrix()
rotation.setByRotationAxis(-0.5 * math.pi, Vector(1, 0, 0))
flip_matrix = Matrix()
flip_matrix._data[1, 1] = 0
flip_matrix._data[1, 2] = 1
flip_matrix._data[2, 1] = 1
flip_matrix._data[2, 2] = 0
# TODO: We currently do not check for normals and simply recalculate them.
mesh_builder.calculateNormals()
mesh_builder.setFileName(name)
mesh_data = mesh_builder.build().getTransformed(flip_matrix)
mesh_data = mesh_builder.build()
if len(mesh_data.getVertices()):
node.setMeshData(mesh_data)
@ -122,31 +109,71 @@ class ThreeMFReader(MeshReader):
temp_mat._data[1, 3] = splitted_transformation[10]
temp_mat._data[2, 3] = splitted_transformation[11]
flip_matrix = Matrix()
flip_matrix._data[1, 1] = 0
flip_matrix._data[1, 2] = 1
flip_matrix._data[2, 1] = 1
flip_matrix._data[2, 2] = 0
temp_mat.multiply(flip_matrix)
return temp_mat
def read(self, file_name):
result = SceneNode()
group_decorator = GroupDecorator()
result.addDecorator(group_decorator)
# The base object of 3mf is a zipped archive.
archive = zipfile.ZipFile(file_name, "r")
self._base_name = os.path.basename(file_name)
try:
self._root = ET.parse(archive.open("3D/3dmodel.model"))
self._unit = self._root.getroot().get("unit")
build_items = self._root.findall("./3mf:build/3mf:item", self._namespaces)
for build_item in build_items:
id = build_item.get("objectid")
object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
build_item_node = self._createNodeFromObject(object)
if "type" in object.attrib:
if object.attrib["type"] == "support" or object.attrib["type"] == "other":
# Ignore support objects, as cura does not support these.
# We can't guarantee that they wont be made solid.
# We also ignore "other", as I have no idea what to do with them.
Logger.log("w", "3MF file contained an object of type %s which is not supported by Cura", object.attrib["type"])
continue
elif object.attrib["type"] == "solidsupport" or object.attrib["type"] == "model":
pass # Load these as normal
else:
# We should technically fail at this point because it's an invalid 3MF, but try to continue anyway.
Logger.log("e", "3MF file contained an object of type %s which is not supported by the 3mf spec",
object.attrib["type"])
continue
build_item_node = self._createNodeFromObject(object, self._base_name + "_" + str(id))
transform = build_item.get("transform")
if transform is not None:
build_item_node.setTransformation(self._createMatrixFromTransformationString(transform))
global_container_stack = UM.Application.getInstance().getGlobalContainerStack()
# Create a transformation Matrix to convert from 3mf worldspace into ours.
# First step: flip the y and z axis.
transformation_matrix = Matrix()
transformation_matrix._data[1, 1] = 0
transformation_matrix._data[1, 2] = 1
transformation_matrix._data[2, 1] = -1
transformation_matrix._data[2, 2] = 0
# Second step: 3MF defines the left corner of the machine as center, whereas cura uses the center of the
# build volume.
if global_container_stack:
translation_vector = Vector(x = -global_container_stack.getProperty("machine_width", "value") / 2,
y = -global_container_stack.getProperty("machine_depth", "value") / 2,
z = 0)
translation_matrix = Matrix()
translation_matrix.setByTranslation(translation_vector)
transformation_matrix.multiply(translation_matrix)
# Third step: 3MF also defines a unit, wheras Cura always assumes mm.
scale_matrix = Matrix()
scale_matrix.setByScaleVector(self._getScaleFromUnit(self._unit))
transformation_matrix.multiply(scale_matrix)
# Pre multiply the transformation with the loaded transformation, so the data is handled correctly.
build_item_node.setTransformation(build_item_node.getLocalTransformation().preMultiply(transformation_matrix))
result.addChild(build_item_node)
except Exception as e:
@ -157,10 +184,35 @@ class ThreeMFReader(MeshReader):
except:
return None
global_container_stack = UM.Application.getInstance().getGlobalContainerStack()
if global_container_stack:
translation = Vector(x=-global_container_stack.getProperty("machine_width", "value") / 2, y=0,
z=global_container_stack.getProperty("machine_depth", "value") / 2)
result.translate(translation, SceneNode.TransformSpace.World)
result.setEnabled(False) # The result should not be moved in any way, so disable it.
return result
## Create a scale vector based on a unit string.
# The core spec defines the following:
# * micron
# * millimeter (default)
# * centimeter
# * inch
# * foot
# * meter
def _getScaleFromUnit(self, unit):
if unit is None:
unit = "millimeter"
if unit == "micron":
scale = 0.001
elif unit == "millimeter":
scale = 1
elif unit == "centimeter":
scale = 10
elif unit == "inch":
scale = 25.4
elif unit == "foot":
scale = 304.8
elif unit == "meter":
scale = 1000
else:
Logger.log("w", "Unrecognised unit %s used. Assuming mm instead", unit)
scale = 1
return Vector(scale, scale, scale)

View File

@ -3,25 +3,35 @@
The layer height of each profile is now shown in the profile selection menu.
*Bug fixes
Upgrading from version 2.1 on OSX works again.
You can import g-code from related machines as profile.
Fixed inheritance taking from the wrong extruder.
Moved z-hop and extruder selection settings to a better category.
Editing material settings has actual effect on the prints again
Upgrading from version 2.1 on OSX works again
You can import g-code from related machines as profile
Fixed inheritance taking from the wrong extruder
The i-symbol is updated properly
Fixed a freeze that could sometimes occur while printing via Wi-Fi
[2.3.0]
*Multi Extrusion Support
Machines with multiple extruders are now supported. Ultimaker 3 printers and Ultimaker Original printers with dual extrusion upgrade kit are currently supported.
*Network Printing for Ultimaker 3
Sending a print to an Ultimaker 3 remotely via the network is now possible. Requires Wi-Fi or LAN to connect to the printer.
*Print Monitoring for Ultimaker 3
You can monitor your print on an Ultimaker 3 with a live camera feed. Requires Wi-Fi or LAN to connect to the printer.
*Material and Print Core Synchronization
Connecting to an Ultimaker 3 now gives you the option to synchronize the materials in Cura with what is loaded in the printer.
*Speed improvements
The first thing you will notice is the speed. STL loading is now 10 to 20 times faster, layerview is significantly faster and slicing speed is slightly improved.
*Multi Extrusion Support
Machines with multiple extruders are now supported. If youve got the Ultimaker Original with the dual extrusion upgrade kit, weve got you covered.
*Custom Machine Support
Its now much easier to use Cura with custom machines. You can edit the machine settings when you load a new custom machine.
The first thing you will notice is the speed. STL loading is now 10 to 20 times faster, layer view is significantly faster and slicing speed is slightly improved.
*Improved Position Tool
Place objects precisely where you want them by manually entering the values for the position.
*Custom Machine Support
Its now much easier to use Cura with custom machines. You can edit the machine settings when you load a new custom machine.
*Improved Grouping
It's now possible to transform objects that are already grouped.
Select an individual item in a group or merged object and edit as usual. Just Ctrl + Click and edit away.
@ -30,7 +40,7 @@ Select an individual item in a group or merged object and edit as usual. Just Ct
Profile management is improved. You can now easily see and track changes made to your profiles.
*Improved Setting Visibility
Make multiple settings visible at once. The Visibility Overview setting indicates why a setting is not shown in the sidebar even if it is enabled.
Make multiple settings visible at the same time with a checkbox. The Visibility Overview setting indicates why a setting is not shown in the sidebar even if it is enabled.
*Improved time estimation
Time estimations are more accurate. Based on our test time estimations should be within 5% accuracy for Ultimaker printers.
@ -46,10 +56,10 @@ Configurations from older installations of Cura 2.1 are automatically imported i
*Slicing features
*Infill Types
We've introduced two new infill types: Tetrahedral and Cubic. They change along with the Z-axis for more uniform strength in all directions. There are now 7 infill types to choose from.
Two new infill types are now introduced: Tetrahedral and Cubic. They change along with the Z-axis for more uniform strength in all directions. There are now seven infill types to choose from.
*Gradual Infill
Now you can change the density of the infill based on the distance from the top layers. Your objects print faster, use less material, while top surfaces have the same quality.
Gradual infill lets users adjust infill density, based on the distance from the top layers. This offers faster printing and reduced material requirements, whilst maintaining surface quality.
*Set Acceleration and Jerk by Feature
You can now set Jerk and Acceleration by feature-type (infill, walls, top/bottom, etc), for more precision.
@ -66,7 +76,7 @@ Cant avoid previously printed parts by horizontal moves? The Z Hop Only Over
*Skin and Wall Overlap
The Skin Overlap setting allows you to overlap the skin lines with the walls for better adhesion.
*Control Initial Layer Travel Speed
*Adjust Initial Layer Travel Speed
Set the travel speed of the initial layer(s) to reduce risk of extruder pulling the print from the bed.
*Support Interface
@ -76,39 +86,39 @@ It is now possible to print a support bottom as well as a support roof. Support
Deleting grouped objects
Duplicating groups
Bridging
Drag and drop on the first run on Windows
Drag and drop (first Windows run)
Unretraction speeds
Bottom layer in Spiralize mode
Overlap Compensation
Retractions on Raft
Retractions now occur after each object printed in one-at-a-time mode.
Rafts are no longer printed outside of build area.
Spiralize no longer only spiralizes the first printed segment only.
Line distance is now the actual line distance.
Enabling raft doesnt influence at which height the model is sliced any more.
Brim is now always printed just once.
Support roofs now only occur just below overhang.
Raft retractions
Retractions now occur after each object printed in one-at-a-time mode
Rafts are no longer printed outside of build area
Spiralize no longer limited to the first printed segment only
Line distance is now the actual line distance
Enabling raft doesnt influence at which height the model is sliced any more
Brim is now always printed just once
Support roofs now only occur just below overhang
*Minor changes
Messages are now displayed 30 seconds instead of 10, making it less likely that certain messages are missed.
You are now notified if you try to save to a locked SD card.
Engine log is now included in the application log.
Undo and Redo now work correctly with multiple operations.
The last used folder is now remembered (instead of defaulting to home folder).
Import X3D files.
Made it possible to add multiple Per Model Settings at once.
Bed Level and Checkup procedures for UMO+ can now be done without re-adding machine.
Combing is applied in more cases and results in better paths.
Infill thickness now supports Grid infill also for even multiples of the layer height.
Support is no longer removed by unprintable thin parts of the model.
Support is now generated on each layer its supposed to.
Support doesn't go outside overhang areas any more.
Support doesn't remove brim around the object any more.
Brim is now also generated under the support.
Draft shield and Ooze shield get their own brim or raft.
Settings shared between skirt and brim now also activate when brim is selected.
Compensate overlapping wall parts now also works for inner walls.
You can now adjust the speed at which the bed is lowered each layer.
Message display time increased to 30 seconds
Notification if you try to save to a locked SD card
Engine log now included in the application log
Undo and Redo now function with multiple operations
The last used folder is now remembered rather than defaulting to home folder
Import X3D files
Made it possible to add multiple Per Model Settings at once
Bed Level and Checkup procedures for UMO+ can be performed without re-adding machine
Combing applied in more cases and results in better paths
Infill thickness now supports Grid infill also for even multiples of the layer height
Support is no longer removed by unprintable thin parts of the model
Support generated on each appropriate layer
Support no longer goes outside overhang areas
Support no longer removes brim around the object
Brim is now also generated under the support
Draft and Ooze shield get their own brim or raft
Settings shared between skirt and brim now also activate when brim is selected
Compensate overlapping wall parts now also works for inner walls
Bed lowering speed can be adjusted for each layer
[2.1.3]

View File

@ -230,7 +230,7 @@ class CuraEngineBackend(Backend):
if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible:
if Application.getInstance().getPlatformActivity:
self._error_message = Message(catalog.i18nc("@info:status",
"The selected material is imcompatible with the selected machine or configuration."))
"The selected material is incompatible with the selected machine or configuration."))
self._error_message.show()
self.backendStateChange.emit(BackendState.Error)
else:

View File

@ -75,7 +75,7 @@ class StartSliceJob(Job):
return
# Don't slice if there is a setting with an error value.
if not Application.getInstance().getMachineManager().isActiveStackValid:
if Application.getInstance().getMachineManager().stacksHaveErrors:
self.setResult(StartJobResult.SettingError)
return

View File

@ -47,7 +47,17 @@ class GCodeWriter(MeshWriter):
def __init__(self):
super().__init__()
def write(self, stream, node, mode = MeshWriter.OutputMode.TextMode):
## Writes the g-code for the entire scene to a stream.
#
# Note that even though the function accepts a collection of nodes, the
# entire scene is always written to the file since it is not possible to
# separate the g-code for just specific nodes.
#
# \param stream The stream to write the g-code to.
# \param nodes This is ignored.
# \param mode Additional information on how to format the g-code in the
# file. This must always be text mode.
def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode):
if mode != MeshWriter.OutputMode.TextMode:
Logger.log("e", "GCode Writer does not support non-text mode.")
return False

View File

@ -66,8 +66,11 @@ class LegacyProfileReader(ProfileReader):
def read(self, file_name):
if file_name.split(".")[-1] != "ini":
return None
global_container_stack = Application.getInstance().getGlobalContainerStack()
if not global_container_stack:
return None
multi_extrusion = Application.getInstance().getGlobalContainerStack().getProperty("machine_extruder_count", "value") > 1
multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1
if multi_extrusion:
Logger.log("e", "Unable to import legacy profile %s. Multi extrusion is not supported", file_name)
raise Exception("Unable to import legacy profile. Multi extrusion is not supported")
@ -117,7 +120,7 @@ class LegacyProfileReader(ProfileReader):
if "translation" not in dict_of_doom:
Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?")
return None
current_printer_definition = Application.getInstance().getGlobalContainerStack().getBottom()
current_printer_definition = global_container_stack.getBottom()
profile.setDefinition(current_printer_definition)
for new_setting in dict_of_doom["translation"]: #Evaluate all new settings that would get a value from the translations.
old_setting_expression = dict_of_doom["translation"][new_setting]
@ -137,5 +140,5 @@ class LegacyProfileReader(ProfileReader):
Logger.log("i", "A legacy profile was imported but everything evaluates to the defaults, creating an empty profile.")
profile.setDirty(True)
profile.addMetaDataEntry("type", "quality_changes")
profile.addMetaDataEntry("quality", "normal")
profile.addMetaDataEntry("quality_type", "normal")
return profile

View File

@ -84,11 +84,20 @@ class PerObjectSettingsTool(Tool):
default_stack = ExtruderManager.getInstance().getExtruderStack(0)
if default_stack:
default_stack_id = default_stack.getId()
else: default_stack_id = global_container_stack.getId()
else:
default_stack_id = global_container_stack.getId()
root_node = Application.getInstance().getController().getScene().getRoot()
for node in DepthFirstIterator(root_node):
node.callDecoration("setActiveExtruder", default_stack_id)
new_stack_id = default_stack_id
# Get position of old extruder stack for this node
old_extruder_pos = node.callDecoration("getActiveExtruderPosition")
if old_extruder_pos is not None:
# Fetch current (new) extruder stack at position
new_stack = ExtruderManager.getInstance().getExtruderStack(old_extruder_pos)
if new_stack:
new_stack_id = new_stack.getId()
node.callDecoration("setActiveExtruder", new_stack_id)
self._updateEnabled()

View File

@ -1,3 +1,6 @@
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
import os.path
from UM.Application import Application
@ -17,7 +20,7 @@ class RemovableDriveOutputDevice(OutputDevice):
super().__init__(device_id)
self.setName(device_name)
self.setShortDescription(catalog.i18nc("@action:button", "Save to Removable Drive"))
self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Save to Removable Drive"))
self.setDescription(catalog.i18nc("@item:inlistbox", "Save to Removable Drive {0}").format(device_name))
self.setIconName("save_sd")
self.setPriority(1)
@ -25,7 +28,16 @@ class RemovableDriveOutputDevice(OutputDevice):
self._writing = False
self._stream = None
def requestWrite(self, node, file_name = None, filter_by_machine = False):
## Request the specified nodes to be written to the removable drive.
#
# \param nodes A collection of scene nodes that should be written to the
# removable drive.
# \param file_name \type{string} A suggestion for the file name to write
# to. If none is provided, a file name will be made from the names of the
# meshes.
# \param limit_mimetypes Should we limit the available MIME types to the
# MIME types available to the currently active machine?
def requestWrite(self, nodes, file_name = None, filter_by_machine = False):
filter_by_machine = True # This plugin is indended to be used by machine (regardless of what it was told to do)
if self._writing:
raise OutputDeviceError.DeviceBusyError()
@ -50,15 +62,7 @@ class RemovableDriveOutputDevice(OutputDevice):
extension = file_formats[0]["extension"]
if file_name is None:
for n in BreadthFirstIterator(node):
if n.getMeshData():
file_name = n.getName()
if file_name:
break
if not file_name:
Logger.log("e", "Could not determine a proper file name when trying to write to %s, aborting", self.getName())
raise OutputDeviceError.WriteRequestFailedError()
file_name = self._automaticFileName(nodes)
if extension: # Not empty string.
extension = "." + extension
@ -67,8 +71,8 @@ class RemovableDriveOutputDevice(OutputDevice):
try:
Logger.log("d", "Writing to %s", file_name)
# Using buffering greatly reduces the write time for many lines of gcode
self._stream = open(file_name, "wt", buffering = 1)
job = WriteMeshJob(writer, self._stream, node, MeshWriter.OutputMode.TextMode)
self._stream = open(file_name, "wt", buffering = 1, encoding = "utf-8")
job = WriteMeshJob(writer, self._stream, nodes, MeshWriter.OutputMode.TextMode)
job.setFileName(file_name)
job.progress.connect(self._onProgress)
job.finished.connect(self._onFinished)
@ -88,6 +92,22 @@ class RemovableDriveOutputDevice(OutputDevice):
Logger.log("e", "Operating system would not let us write to %s: %s", file_name, str(e))
raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status", "Could not save to <filename>{0}</filename>: <message>{1}</message>").format(file_name, str(e))) from e
## Generate a file name automatically for the specified nodes to be saved
# in.
#
# The name generated will be the name of one of the nodes. Which node that
# is can not be guaranteed.
#
# \param nodes A collection of nodes for which to generate a file name.
def _automaticFileName(self, nodes):
for root in nodes:
for child in BreadthFirstIterator(root):
if child.getMeshData():
name = child.getName()
if name:
return name
raise OutputDeviceError.WriteRequestFailedError("Could not find a file name when trying to write to {device}.".format(device = self.getName()))
def _onProgress(self, job, progress):
if hasattr(job, "_message"):
job._message.setProgress(progress)

View File

@ -1,4 +1,4 @@
# Copyright (c) 2015 Ultimaker B.V.
# Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher.
from .avr_isp import stk500v2, ispBase, intelHex
@ -25,7 +25,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
def __init__(self, serial_port):
super().__init__(serial_port)
self.setName(catalog.i18nc("@item:inmenu", "USB printing"))
self.setShortDescription(catalog.i18nc("@action:button", "Print via USB"))
self.setShortDescription(catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print via USB"))
self.setDescription(catalog.i18nc("@info:tooltip", "Print via USB"))
self.setIconName("print")
self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB"))
@ -426,7 +426,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
self._error_state = error
self.onError.emit()
def requestWrite(self, node, file_name = None, filter_by_machine = False):
## Request the current scene to be sent to a USB-connected printer.
#
# \param nodes A collection of scene nodes to send. This is ignored.
# \param file_name \type{string} A suggestion for a file name to write.
# This is ignored.
# \param filter_by_machine Whether to filter MIME types by machine. This
# is ignored.
def requestWrite(self, nodes, file_name = None, filter_by_machine = False):
Application.getInstance().showPrintMonitor.emit(True)
self.startPrint()

View File

@ -111,7 +111,7 @@ class MachineInstance:
user_profile_file = os.path.join(user_storage, urllib.parse.quote_plus(self._name) + "_current_settings.inst.cfg")
if not os.path.exists(user_storage):
os.makedirs(user_storage)
with open(user_profile_file, "w") as file_handle:
with open(user_profile_file, "w", encoding = "utf-8") as file_handle:
user_profile.write(file_handle)
version_upgrade_manager.upgradeExtraFile(user_storage, urllib.parse.quote_plus(self._name), "user")

View File

@ -23,6 +23,10 @@ fragment =
uniform vec4 u_outline_color;
uniform vec4 u_error_color;
const vec3 x_axis = vec3(1.0, 0.0, 0.0);
const vec3 y_axis = vec3(0.0, 1.0, 0.0);
const vec3 z_axis = vec3(0.0, 0.0, 1.0);
varying vec2 v_uvs;
float kernel[9];
@ -51,7 +55,15 @@ fragment =
sum += color * (kernel[i] / u_outline_strength);
}
gl_FragColor = mix(result, vec4(abs(sum.a)) * u_outline_color, abs(sum.a));
vec4 layer1 = texture2D(u_layer1, v_uvs);
if((layer1.rgb == x_axis || layer1.rgb == y_axis || layer1.rgb == z_axis))
{
gl_FragColor = result;
}
else
{
gl_FragColor = mix(result, vec4(abs(sum.a)) * u_outline_color, abs(sum.a));
}
}
[defaults]

View File

@ -411,6 +411,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
else:
Logger.log("d", "Unsupported material setting %s", key)
self.addMetaDataEntry("compatible", global_compatibility)
self._dirty = False
machines = data.iterfind("./um:settings/um:machine", self.__namespaces)
@ -447,6 +449,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_material.setName(self.getName())
new_material.setMetaData(copy.deepcopy(self.getMetaData()))
new_material.setDefinition(definition)
# Don't use setMetadata, as that overrides it for all materials with same base file
new_material.getMetaData()["compatible"] = machine_compatibility
for key, value in global_setting_values.items():
new_material.setProperty(key, "value", value, definition)
@ -492,7 +496,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData()))
new_hotend_material.setDefinition(definition)
new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id)
new_hotend_material.addMetaDataEntry("compatible", hotend_compatibility)
# Don't use setMetadata, as that overrides it for all materials with same base file
new_hotend_material.getMetaData()["compatible"] = hotend_compatibility
for key, value in global_setting_values.items():
new_hotend_material.setProperty(key, "value", value, definition)
@ -506,14 +511,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_hotend_material._dirty = False
UM.Settings.ContainerRegistry.getInstance().addContainer(new_hotend_material)
if not global_compatibility:
# 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
# share this basefile are also updated.
dirty = self.isDirty()
super().setMetaDataEntry("type", "incompatible_material")
super().setDirty(dirty) # reset dirty flag after setMetaDataEntry
def _addSettingElement(self, builder, instance):
try:
key = UM.Dictionary.findKey(self.__material_property_setting_map, instance.definition.key)

View File

@ -276,7 +276,9 @@
"label": "Disallowed areas",
"description": "A list of polygons with areas the print head is not allowed to enter.",
"type": "polygons",
"default_value": [],
"default_value":
[
],
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
@ -390,7 +392,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"machine_max_feedrate_x": {
"machine_max_feedrate_x":
{
"label": "Maximum Speed X",
"description": "The maximum speed for the motor of the X-direction.",
"unit": "mm/s",
@ -400,7 +403,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_feedrate_y": {
"machine_max_feedrate_y":
{
"label": "Maximum Speed Y",
"description": "The maximum speed for the motor of the Y-direction.",
"unit": "mm/s",
@ -410,7 +414,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_feedrate_z": {
"machine_max_feedrate_z":
{
"label": "Maximum Speed Z",
"description": "The maximum speed for the motor of the Z-direction.",
"unit": "mm/s",
@ -420,7 +425,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_feedrate_e": {
"machine_max_feedrate_e":
{
"label": "Maximum Feedrate",
"description": "The maximum speed of the filament.",
"unit": "mm/s",
@ -430,7 +436,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_acceleration_x": {
"machine_max_acceleration_x":
{
"label": "Maximum Acceleration X",
"description": "Maximum acceleration for the motor of the X-direction",
"unit": "mm/s²",
@ -440,7 +447,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_acceleration_y": {
"machine_max_acceleration_y":
{
"label": "Maximum Acceleration Y",
"description": "Maximum acceleration for the motor of the Y-direction.",
"unit": "mm/s²",
@ -450,7 +458,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_acceleration_z": {
"machine_max_acceleration_z":
{
"label": "Maximum Acceleration Z",
"description": "Maximum acceleration for the motor of the Z-direction.",
"unit": "mm/s²",
@ -460,7 +469,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_acceleration_e": {
"machine_max_acceleration_e":
{
"label": "Maximum Filament Acceleration",
"description": "Maximum acceleration for the motor of the filament.",
"unit": "mm/s²",
@ -470,7 +480,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_acceleration": {
"machine_acceleration":
{
"label": "Default Acceleration",
"description": "The default acceleration of print head movement.",
"unit": "mm/s²",
@ -480,7 +491,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_jerk_xy": {
"machine_max_jerk_xy":
{
"label": "Default X-Y Jerk",
"description": "Default jerk for movement in the horizontal plane.",
"unit": "mm/s",
@ -490,7 +502,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_jerk_z": {
"machine_max_jerk_z":
{
"label": "Default Z Jerk",
"description": "Default jerk for the motor of the Z-direction.",
"unit": "mm/s",
@ -500,7 +513,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_max_jerk_e": {
"machine_max_jerk_e":
{
"label": "Default Filament Jerk",
"description": "Default jerk for the motor of the filament.",
"unit": "mm/s",
@ -510,7 +524,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_minimum_feedrate": {
"machine_minimum_feedrate":
{
"label": "Minimum Feedrate",
"description": "The minimal movement speed of the print head.",
"unit": "mm/s",
@ -579,7 +594,7 @@
"minimum_value": "0.0001",
"minimum_value_warning": "0.75 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size",
"value":"line_width",
"value": "line_width",
"default_value": 0.4,
"type": "float",
"settable_per_mesh": true,
@ -594,7 +609,7 @@
"minimum_value_warning": "0.75 * machine_nozzle_size if outer_inset_first else 0.1 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size",
"default_value": 0.4,
"value":"wall_line_width",
"value": "wall_line_width",
"type": "float",
"settable_per_mesh": true
},
@ -607,7 +622,7 @@
"minimum_value_warning": "0.5 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size",
"default_value": 0.4,
"value":"wall_line_width",
"value": "wall_line_width",
"type": "float",
"settable_per_mesh": true
}
@ -849,7 +864,7 @@
"maximum_value_warning": "machine_nozzle_size",
"settable_per_mesh": true
},
"outer_inset_first":
"outer_inset_first":
{
"label": "Outer Before Inner Walls",
"description": "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs.",
@ -874,7 +889,8 @@
"settable_per_mesh": true,
"children":
{
"travel_compensate_overlapping_walls_0_enabled": {
"travel_compensate_overlapping_walls_0_enabled":
{
"label": "Compensate Outer Wall Overlaps",
"description": "Compensate the flow for parts of an outer wall being printed where there is already a wall in place.",
"type": "bool",
@ -882,7 +898,8 @@
"value": "travel_compensate_overlapping_walls_enabled",
"settable_per_mesh": true
},
"travel_compensate_overlapping_walls_x_enabled": {
"travel_compensate_overlapping_walls_x_enabled":
{
"label": "Compensate Inner Wall Overlaps",
"description": "Compensate the flow for parts of an inner wall being printed where there is already a wall in place.",
"type": "bool",
@ -1010,7 +1027,8 @@
}
}
},
"skin_overlap": {
"skin_overlap":
{
"label": "Skin Overlap Percentage",
"description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.",
"unit": "%",
@ -1021,8 +1039,10 @@
"value": "5 if top_bottom_pattern != 'concentric' else 0",
"enabled": "top_bottom_pattern != 'concentric'",
"settable_per_mesh": true,
"children": {
"skin_overlap_mm": {
"children":
{
"skin_overlap_mm":
{
"label": "Skin Overlap",
"description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.",
"unit": "mm",
@ -1033,9 +1053,9 @@
"value": "skin_line_width * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0",
"enabled": "top_bottom_pattern != 'concentric'",
"settable_per_mesh": true
}
}
},
}
}
},
"infill_wipe_dist":
{
"label": "Infill Wipe Distance",
@ -1143,7 +1163,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_extrusion_cool_down_speed": {
"material_extrusion_cool_down_speed":
{
"label": "Extrusion Cool Down Speed Modifier",
"description": "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding.",
"unit": "°C/s",
@ -1156,7 +1177,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_bed_temperature": {
"material_bed_temperature":
{
"label": "Build Plate Temperature",
"description": "The temperature used for the heated build plate. Set at 0 to pre-heat the printer manually.",
"unit": "°C",
@ -1171,7 +1193,8 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"material_diameter": {
"material_diameter":
{
"label": "Diameter",
"description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.",
"unit": "mm",
@ -1183,7 +1206,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"material_flow": {
"material_flow":
{
"label": "Flow",
"description": "Flow compensation: the amount of material extruded is multiplied by this value.",
"unit": "%",
@ -1194,7 +1218,8 @@
"maximum_value_warning": "150",
"settable_per_mesh": true
},
"retraction_enable": {
"retraction_enable":
{
"label": "Enable Retraction",
"description": "Retract the filament when the nozzle is moving over a non-printed area. ",
"type": "bool",
@ -1202,7 +1227,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_amount": {
"retraction_amount":
{
"label": "Retraction Distance",
"description": "The length of material retracted during a retraction move.",
"unit": "mm",
@ -1214,7 +1240,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_speed": {
"retraction_speed":
{
"label": "Retraction Speed",
"description": "The speed at which the filament is retracted and primed during a retraction move.",
"unit": "mm/s",
@ -1227,8 +1254,10 @@
"enabled": "retraction_enable",
"settable_per_mesh": false,
"settable_per_extruder": true,
"children": {
"retraction_retract_speed": {
"children":
{
"retraction_retract_speed":
{
"label": "Retraction Retract Speed",
"description": "The speed at which the filament is retracted during a retraction move.",
"unit": "mm/s",
@ -1243,7 +1272,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_prime_speed": {
"retraction_prime_speed":
{
"label": "Retraction Prime Speed",
"description": "The speed at which the filament is primed during a retraction move.",
"unit": "mm/s",
@ -1260,7 +1290,8 @@
}
}
},
"retraction_extra_prime_amount": {
"retraction_extra_prime_amount":
{
"label": "Retraction Extra Prime Amount",
"description": "Some material can ooze away during a travel move, which can be compensated for here.",
"unit": "mm³",
@ -1272,7 +1303,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_min_travel": {
"retraction_min_travel":
{
"label": "Retraction Minimum Travel",
"description": "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area.",
"unit": "mm",
@ -1285,7 +1317,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_count_max": {
"retraction_count_max":
{
"label": "Maximum Retraction Count",
"description": "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues.",
"default_value": 90,
@ -1296,7 +1329,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"retraction_extrusion_window": {
"retraction_extrusion_window":
{
"label": "Minimum Extrusion Distance Window",
"description": "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited.",
"unit": "mm",
@ -1560,7 +1594,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"speed_layer_0": {
"speed_layer_0":
{
"label": "Initial Layer Speed",
"description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate.",
"unit": "mm/s",
@ -1601,7 +1636,8 @@
}
}
},
"skirt_brim_speed": {
"skirt_brim_speed":
{
"label": "Skirt/Brim Speed",
"description": "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed.",
"unit": "mm/s",
@ -1664,9 +1700,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"acceleration_enabled": {
"acceleration_enabled":
{
"label": "Enable Acceleration Control",
"description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.",
"type": "bool",
@ -1675,7 +1710,8 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"acceleration_print": {
"acceleration_print":
{
"label": "Print Acceleration",
"description": "The acceleration with which printing happens.",
"unit": "mm/s²",
@ -1686,8 +1722,10 @@
"default_value": 3000,
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true,
"children": {
"acceleration_infill": {
"children":
{
"acceleration_infill":
{
"label": "Infill Acceleration",
"description": "The acceleration with which infill is printed.",
"unit": "mm/s²",
@ -1700,7 +1738,8 @@
"enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0",
"settable_per_mesh": true
},
"acceleration_wall": {
"acceleration_wall":
{
"label": "Wall Acceleration",
"description": "The acceleration with which the walls are printed.",
"unit": "mm/s²",
@ -1712,8 +1751,10 @@
"value": "acceleration_print",
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true,
"children": {
"acceleration_wall_0": {
"children":
{
"acceleration_wall_0":
{
"label": "Outer Wall Acceleration",
"description": "The acceleration with which the outermost walls are printed.",
"unit": "mm/s²",
@ -1726,7 +1767,8 @@
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true
},
"acceleration_wall_x": {
"acceleration_wall_x":
{
"label": "Inner Wall Acceleration",
"description": "The acceleration with which all inner walls are printed.",
"unit": "mm/s²",
@ -1741,7 +1783,8 @@
}
}
},
"acceleration_topbottom": {
"acceleration_topbottom":
{
"label": "Top/Bottom Acceleration",
"description": "The acceleration with which top/bottom layers are printed.",
"unit": "mm/s²",
@ -1754,7 +1797,8 @@
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true
},
"acceleration_support": {
"acceleration_support":
{
"label": "Support Acceleration",
"description": "The acceleration with which the support structure is printed.",
"unit": "mm/s²",
@ -1768,8 +1812,10 @@
"settable_per_mesh": false,
"limit_to_extruder": "support_extruder_nr",
"settable_per_extruder": true,
"children": {
"acceleration_support_infill": {
"children":
{
"acceleration_support_infill":
{
"label": "Support Infill Acceleration",
"description": "The acceleration with which the infill of support is printed.",
"unit": "mm/s²",
@ -1784,7 +1830,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"acceleration_support_interface": {
"acceleration_support_interface":
{
"label": "Support Interface Acceleration",
"description": "The acceleration with which the roofs and bottoms of support are printed. Printing them at lower accelerations can improve overhang quality.",
"unit": "mm/s²",
@ -1801,7 +1848,8 @@
}
}
},
"acceleration_prime_tower": {
"acceleration_prime_tower":
{
"label": "Prime Tower Acceleration",
"description": "The acceleration with which the prime tower is printed.",
"unit": "mm/s²",
@ -1816,7 +1864,8 @@
}
}
},
"acceleration_travel": {
"acceleration_travel":
{
"label": "Travel Acceleration",
"description": "The acceleration with which travel moves are made.",
"unit": "mm/s²",
@ -1829,7 +1878,8 @@
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false
},
"acceleration_layer_0": {
"acceleration_layer_0":
{
"label": "Initial Layer Acceleration",
"description": "The acceleration for the initial layer.",
"unit": "mm/s²",
@ -1841,7 +1891,8 @@
"maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true,
"children": {
"children":
{
"acceleration_print_layer_0":
{
"label": "Initial Layer Print Acceleration",
@ -1873,7 +1924,8 @@
}
}
},
"acceleration_skirt_brim": {
"acceleration_skirt_brim":
{
"label": "Skirt/Brim Acceleration",
"description": "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration.",
"unit": "mm/s²",
@ -1887,8 +1939,8 @@
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
},
"jerk_enabled": {
"jerk_enabled":
{
"label": "Enable Jerk Control",
"description": "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality.",
"type": "bool",
@ -1897,7 +1949,8 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"jerk_print": {
"jerk_print":
{
"label": "Print Jerk",
"description": "The maximum instantaneous velocity change of the print head.",
"unit": "mm/s",
@ -1908,8 +1961,10 @@
"default_value": 20,
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true,
"children": {
"jerk_infill": {
"children":
{
"jerk_infill":
{
"label": "Infill Jerk",
"description": "The maximum instantaneous velocity change with which infill is printed.",
"unit": "mm/s",
@ -1922,7 +1977,8 @@
"enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0",
"settable_per_mesh": true
},
"jerk_wall": {
"jerk_wall":
{
"label": "Wall Jerk",
"description": "The maximum instantaneous velocity change with which the walls are printed.",
"unit": "mm/s",
@ -1934,8 +1990,10 @@
"value": "jerk_print",
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true,
"children": {
"jerk_wall_0": {
"children":
{
"jerk_wall_0":
{
"label": "Outer Wall Jerk",
"description": "The maximum instantaneous velocity change with which the outermost walls are printed.",
"unit": "mm/s",
@ -1948,7 +2006,8 @@
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true
},
"jerk_wall_x": {
"jerk_wall_x":
{
"label": "Inner Wall Jerk",
"description": "The maximum instantaneous velocity change with which all inner walls are printed.",
"unit": "mm/s",
@ -1963,7 +2022,8 @@
}
}
},
"jerk_topbottom": {
"jerk_topbottom":
{
"label": "Top/Bottom Jerk",
"description": "The maximum instantaneous velocity change with which top/bottom layers are printed.",
"unit": "mm/s",
@ -1976,7 +2036,8 @@
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true
},
"jerk_support": {
"jerk_support":
{
"label": "Support Jerk",
"description": "The maximum instantaneous velocity change with which the support structure is printed.",
"unit": "mm/s",
@ -1990,8 +2051,10 @@
"settable_per_mesh": false,
"settable_per_extruder": true,
"limit_to_extruder": "support_extruder_nr",
"children": {
"jerk_support_infill": {
"children":
{
"jerk_support_infill":
{
"label": "Support Infill Jerk",
"description": "The maximum instantaneous velocity change with which the infill of support is printed.",
"unit": "mm/s",
@ -2006,7 +2069,8 @@
"settable_per_mesh": false,
"settable_per_extruder": true
},
"jerk_support_interface": {
"jerk_support_interface":
{
"label": "Support Interface Jerk",
"description": "The maximum instantaneous velocity change with which the roofs and bottoms of support are printed.",
"unit": "mm/s",
@ -2023,7 +2087,8 @@
}
}
},
"jerk_prime_tower": {
"jerk_prime_tower":
{
"label": "Prime Tower Jerk",
"description": "The maximum instantaneous velocity change with which the prime tower is printed.",
"unit": "mm/s",
@ -2038,7 +2103,8 @@
}
}
},
"jerk_travel": {
"jerk_travel":
{
"label": "Travel Jerk",
"description": "The maximum instantaneous velocity change with which travel moves are made.",
"unit": "mm/s",
@ -2051,7 +2117,8 @@
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": false
},
"jerk_layer_0": {
"jerk_layer_0":
{
"label": "Initial Layer Jerk",
"description": "The print maximum instantaneous velocity change for the initial layer.",
"unit": "mm/s",
@ -2063,7 +2130,8 @@
"maximum_value_warning": "50",
"enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true,
"children": {
"children":
{
"jerk_print_layer_0":
{
"label": "Initial Layer Print Jerk",
@ -2095,7 +2163,8 @@
}
}
},
"jerk_skirt_brim": {
"jerk_skirt_brim":
{
"label": "Skirt/Brim Jerk",
"description": "The maximum instantaneous velocity change with which the skirt and brim are printed.",
"unit": "mm/s",
@ -2306,7 +2375,7 @@
"cool_min_layer_time":
{
"label": "Minimum Layer Time",
"description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer.",
"description": "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated.",
"unit": "s",
"type": "float",
"default_value": 5,
@ -2473,7 +2542,8 @@
"limit_to_extruder": "support_infill_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true,
"children": {
"children":
{
"support_line_distance":
{
"label": "Support Line Distance",
@ -2548,11 +2618,13 @@
"enabled": "support_enable",
"settable_per_mesh": true
},
"support_xy_overrides_z": {
"support_xy_overrides_z":
{
"label": "Support Distance Priority",
"description": "Whether the Support X/Y Distance overrides the Support Z Distance or vice versa. When X/Y overrides Z the X/Y distance can push away the support from the model, influencing the actual Z distance to the overhang. We can disable this by not applying the X/Y distance around overhangs.",
"type": "enum",
"options": {
"options":
{
"xy_overrides_z": "X/Y overrides Z",
"z_overrides_xy": "Z overrides X/Y"
},
@ -2561,7 +2633,8 @@
"enabled": "support_enable",
"settable_per_mesh": true
},
"support_xy_distance_overhang": {
"support_xy_distance_overhang":
{
"label": "Minimum Support X/Y Distance",
"description": "Distance of the support structure from the overhang in the X/Y directions. ",
"unit": "mm",
@ -2959,7 +3032,8 @@
"settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr"
},
"layer_0_z_overlap": {
"layer_0_z_overlap":
{
"label": "Initial Layer Z Overlap",
"description": "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount.",
"unit": "mm",
@ -3197,7 +3271,8 @@
}
}
},
"raft_acceleration": {
"raft_acceleration":
{
"label": "Raft Print Acceleration",
"description": "The acceleration with which the raft is printed.",
"unit": "mm/s²",
@ -3210,8 +3285,10 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr",
"children": {
"raft_surface_acceleration": {
"children":
{
"raft_surface_acceleration":
{
"label": "Raft Top Print Acceleration",
"description": "The acceleration with which the top raft layers are printed.",
"unit": "mm/s²",
@ -3225,7 +3302,8 @@
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
},
"raft_interface_acceleration": {
"raft_interface_acceleration":
{
"label": "Raft Middle Print Acceleration",
"description": "The acceleration with which the middle raft layer is printed.",
"unit": "mm/s²",
@ -3239,7 +3317,8 @@
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
},
"raft_base_acceleration": {
"raft_base_acceleration":
{
"label": "Raft Base Print Acceleration",
"description": "The acceleration with which the base raft layer is printed.",
"unit": "mm/s²",
@ -3255,7 +3334,8 @@
}
}
},
"raft_jerk": {
"raft_jerk":
{
"label": "Raft Print Jerk",
"description": "The jerk with which the raft is printed.",
"unit": "mm/s",
@ -3268,8 +3348,10 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr",
"children": {
"raft_surface_jerk": {
"children":
{
"raft_surface_jerk":
{
"label": "Raft Top Print Jerk",
"description": "The jerk with which the top raft layers are printed.",
"unit": "mm/s",
@ -3283,7 +3365,8 @@
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
},
"raft_interface_jerk": {
"raft_interface_jerk":
{
"label": "Raft Middle Print Jerk",
"description": "The jerk with which the middle raft layer is printed.",
"unit": "mm/s",
@ -3297,7 +3380,8 @@
"settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr"
},
"raft_base_jerk": {
"raft_base_jerk":
{
"label": "Raft Base Print Jerk",
"description": "The jerk with which the base raft layer is printed.",
"unit": "mm/s",
@ -3313,7 +3397,8 @@
}
}
},
"raft_fan_speed": {
"raft_fan_speed":
{
"label": "Raft Fan Speed",
"description": "The fan speed for the raft.",
"unit": "%",
@ -3558,6 +3643,17 @@
"type": "bool",
"default_value": false,
"settable_per_mesh": true
},
"carve_multiple_volumes":
{
"label": "Remove Mesh Intersection",
"description": "Remove areas where multiple objects are overlapping with each other. This may be used if merged dual material objects overlap with each other.",
"type": "bool",
"default_value": true,
"value": "machine_extruder_count > 1",
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": true
}
}
},
@ -3694,13 +3790,15 @@
"settable_per_mesh": false,
"settable_per_extruder": false
},
"conical_overhang_enabled": {
"conical_overhang_enabled":
{
"label": "Make Overhang Printable",
"description": "Change the geometry of the printed model such that minimal support is required. Steep overhangs will become shallow overhangs. Overhanging areas will drop down to become more vertical.",
"type": "bool",
"default_value": false
},
"conical_overhang_angle": {
"conical_overhang_angle":
{
"label": "Maximum Model Angle",
"description": "The maximum angle of overhangs after the they have been made printable. At a value of 0° all overhangs are replaced by a piece of model connected to the build plate, 90° will not change the model in any way.",
"unit": "°",

View File

@ -0,0 +1,51 @@
{
"id": "printrbot_play",
"version": 2,
"name": "Printrbot Play",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "Chris Pearson",
"manufacturer": "Printrbot",
"category": "Other",
"file_formats": "text/x-gcode",
"platform": "printrbot_play.stl"
},
"overrides": {
"machine_name": { "default_value": "Printrbot Play" },
"machine_heated_bed": { "default_value": false },
"machine_width": { "default_value": 100 },
"machine_depth": { "default_value": 100 },
"machine_height": { "default_value": 130 },
"machine_center_is_zero": { "default_value": false },
"material_diameter": { "default_value": 1.75 },
"machine_nozzle_size": { "default_value": 0.4 },
"layer_height": { "default_value": 0.2 },
"layer_height_0": { "default_value": 0.3 },
"retraction_amount": { "default_value": 0.7 },
"retraction_speed": { "default_value": 45},
"adhesion_type": { "default_value": "skirt" },
"machine_head_with_fans_polygon": { "default_value": [[-32,999],[37,999],[37,-32],[-32,-32]] },
"gantry_height": { "default_value": 55 },
"speed_print": { "default_value": 50 },
"speed_travel": { "default_value": 55 },
"machine_max_feedrate_x": {"default_value": 125},
"machine_max_feedrate_y": {"default_value": 125},
"machine_max_feedrate_z": { "default_value": 5 },
"machine_max_acceleration_x": { "default_value": 2000 },
"machine_max_acceleration_y": { "default_value": 2000 },
"machine_max_acceleration_z": { "default_value": 30 },
"machine_max_acceleration_e": { "default_value": 10000 },
"machine_max_jerk_xy": { "default_value": 20 },
"machine_max_jerk_z": { "default_value": 0.4 },
"machine_max_jerk_e": { "default_value": 5.0 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_start_gcode": {
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM106 ;start with the fan on for filament cooling\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG29 ;run auto bed leveling\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."
},
"machine_end_gcode": {
"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
}
}
}

View File

@ -0,0 +1,20 @@
{
"id": "printrbot_play_heated",
"version": 2,
"name": "Printrbot Play (Heated Bed)",
"inherits": "printrbot_play",
"metadata": {
"visible": true,
"author": "Chris Pearson",
"manufacturer": "Printrbot",
"category": "Other",
"file_formats": "text/x-gcode",
"platform": ""
},
"overrides": {
"machine_name": { "default_value": "Printrbot Play (Heated Bed)" },
"machine_heated_bed": { "default_value": true },
"machine_depth": { "default_value": 203 }
}
}

View File

@ -9,6 +9,7 @@
"manufacturer": "PrintrBot",
"category": "Other",
"platform": "printrbot_simple_metal_platform.stl",
"platform_offset": [0, -3.45, 0],
"file_formats": "text/x-gcode"
},

View File

@ -21,7 +21,7 @@
"machine_name": { "default_value": "Ultimaker 2" },
"machine_start_gcode" : {
"default_value": "",
"value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG1 X10 Y0 F4000;move X/Y to min endstops\\nG28 Z0 ;move Z to bottom endstops\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\""
"value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nG28 Z0 ;move Z to bottom endstops\\nG28 X0 Y0 ;move X/Y to endstops\\nG1 X15 Y0 F4000 ;move X/Y to front of printer\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\""
},
"machine_end_gcode" : {
"default_value": "",

View File

@ -40,7 +40,7 @@
"value": "speed_wall_0"
},
"machine_height": {
"default_value": 203
"default_value": 205
},
"machine_show_variants": {
"default_value": true

View File

@ -38,8 +38,8 @@
"machine_depth": { "default_value": 215 },
"machine_height": { "default_value": 200 },
"machine_heated_bed": { "default_value": true },
"machine_nozzle_heat_up_speed": { "default_value": 0.8 },
"machine_nozzle_cool_down_speed": { "default_value": 1 },
"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,14 +50,12 @@
[ 60, -30 ]
]
},
"machine_center_is_zero": { "default_value": false },
"machine_gcode_flavor": { "default_value": "Griffin" },
"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": 3000 },
"gantry_height": { "default_value": 60 },
"machine_use_extruder_offset_to_offset_coords": { "default_value": true },
"machine_disallowed_areas": { "default_value": [
[[-91.5, -115], [-115, -115], [-115, -104.6], [-91.5, -104.6]],
[[-99.5, -104.6], [-115, -104.6], [-115, 104.6], [-99.5, 104.6]],
@ -69,16 +67,93 @@
[[100.5, -54.5], [100.5, 99.3], [115, 99.3], [115, -54.5]],
[[77, 99.3], [77, 115], [115, 115], [115, 99.3]]
]},
"machine_show_variants": { "default_value": true },
"machine_extruder_count": { "default_value": 2 },
"print_sequence": {"enabled": false},
"extruder_prime_pos_abs": { "default_value": true },
"extruder_prime_pos_x": { "enabled": false },
"extruder_prime_pos_y": { "enabled": false },
"machine_start_gcode": { "default_value": "" },
"machine_end_gcode": { "default_value": "" },
"prime_tower_position_x": { "default_value": 175 },
"prime_tower_position_y": { "default_value": 179 },
"speed_prime_tower": { "default_value": 30 }
"extruder_prime_pos_x": { "enabled": false },
"extruder_prime_pos_y": { "enabled": false },
"print_sequence": {"enabled": false},
"acceleration_enabled": { "value": "True" },
"acceleration_layer_0": { "value": "acceleration_topbottom" },
"acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" },
"acceleration_print": { "value": "4000" },
"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 + 4 * layer_height" },
"cool_fan_speed": { "value": "50" },
"cool_fan_speed_max": { "value": "100" },
"cool_min_speed": { "value": "5" },
"infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" },
"infill_overlap": { "value": "0" },
"infill_pattern": { "value": "'triangles'" },
"infill_wipe_dist": { "value": "0" },
"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)" },
"layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" },
"line_width": { "value": "machine_nozzle_size * 0.875" },
"machine_min_cool_heat_time_window": { "value": "15" },
"material_print_temperature": { "value": "200" },
"material_standby_temperature": { "value": "100" },
"multiple_mesh_overlap": { "value": "0" },
"prime_tower_enable": { "value": "True" },
"raft_airgap": { "value": "0" },
"raft_base_speed": { "value": "20" },
"raft_base_thickness": { "value": "0.3" },
"raft_interface_line_spacing": { "value": "0.5" },
"raft_interface_line_width": { "value": "0.5" },
"raft_interface_speed": { "value": "20" },
"raft_interface_thickness": { "value": "0.2" },
"raft_jerk": { "value": "jerk_layer_0" },
"raft_margin": { "value": "10" },
"raft_speed": { "value": "25" },
"raft_surface_layers": { "value": "1" },
"retraction_amount": { "value": "2" },
"retraction_count_max": { "value": "10" },
"retraction_extrusion_window": { "value": "1" },
"retraction_hop": { "value": "2" },
"retraction_hop_enabled": { "value": "True" },
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },
"speed_print": { "value": "35" },
"speed_support": { "value": "speed_wall_0" },
"speed_support_interface": { "value": "speed_topbottom" },
"speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" },
"speed_travel": { "value": "250" },
"speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" },
"speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" },
"speed_wall_x": { "value": "speed_wall" },
"support_angle": { "value": "45" },
"support_pattern": { "value": "'triangles'" },
"support_use_towers": { "value": "False" },
"support_xy_distance": { "value": "wall_line_width_0 * 2.5" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "0" },
"switch_extruder_prime_speed": { "value": "15" },
"switch_extruder_retraction_amount": { "value": "8" },
"top_bottom_thickness": { "value": "1" },
"travel_avoid_distance": { "value": "3" },
"wall_0_inset": { "value": "0" },
"wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" },
"wall_thickness": { "value": "1" }
}
}

View File

@ -14,7 +14,7 @@
"platform_texture": "Ultimaker3Extendedbackplate.png",
"platform_offset": [0, 0, 0],
"has_machine_quality": true,
"has_machine_materials": true,
"has_machine_materials": true,
"has_variant_materials": true,
"has_materials": true,
"has_variants": true,

File diff suppressed because it is too large Load Diff

View File

@ -1836,8 +1836,8 @@ msgstr "Empfohlen"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Erweitert"
msgid "Custom"
msgstr "Benutzerdefiniert"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -1916,8 +1916,8 @@ msgstr "Recommended"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Advanced"
msgid "Custom"
msgstr "Custom"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -1836,8 +1836,8 @@ msgstr "Recomendado"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Avanzado"
msgid "Custom"
msgstr "Personalizado"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 14:48+0000\n"
"POT-Creation-Date: 2016-10-27 11:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n"
"POT-Creation-Date: 2016-09-20 14:48+0000\n"
"POT-Creation-Date: 2016-10-27 11:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n"
@ -815,6 +815,20 @@ msgid ""
"outside of the model."
msgstr ""
#: fdmprinter.def.json
msgctxt "outer_inset_first label"
msgid "Outer Before Inner Walls"
msgstr ""
#: fdmprinter.def.json
msgctxt "outer_inset_first description"
msgid ""
"Prints walls in order of outside to inside when enabled. This can help "
"improve dimensional accuracy in X and Y when using a high viscosity plastic "
"like ABS; however it can decrease outer surface print quality, especially on "
"overhangs."
msgstr ""
#: fdmprinter.def.json
msgctxt "alternate_extra_perimeter label"
msgid "Alternate Extra Wall"
@ -1310,42 +1324,6 @@ msgid ""
"material is limited."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_enabled label"
msgid "Z Hop when Retracted"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_enabled description"
msgid ""
"Whenever a retraction is done, the build plate is lowered to create "
"clearance between the nozzle and the print. It prevents the nozzle from "
"hitting the print during travel moves, reducing the chance to knock the "
"print from the build plate."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_only_when_collides label"
msgid "Z Hop Only Over Printed Parts"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_only_when_collides description"
msgid ""
"Only perform a Z Hop when moving over printed parts which cannot be avoided "
"by horizontal motion by Avoid Printed Parts when Traveling."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop label"
msgid "Z Hop Height"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop description"
msgid "The height difference when performing a Z Hop."
msgstr ""
#: fdmprinter.def.json
msgctxt "material_standby_temperature label"
msgid "Standby Temperature"
@ -1405,19 +1383,6 @@ msgid ""
"retraction."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_after_extruder_switch label"
msgid "Z Hop After Extruder Switch"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_after_extruder_switch description"
msgid ""
"After the machine switched from one extruder to the other, the build plate "
"is lowered to create clearance between the nozzle and the print. This "
"prevents the nozzle from leaving oozed material on the outside of a print."
msgstr ""
#: fdmprinter.def.json
msgctxt "speed label"
msgid "Speed"
@ -2070,6 +2035,55 @@ msgid ""
"during travel moves."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_enabled label"
msgid "Z Hop when Retracted"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_enabled description"
msgid ""
"Whenever a retraction is done, the build plate is lowered to create "
"clearance between the nozzle and the print. It prevents the nozzle from "
"hitting the print during travel moves, reducing the chance to knock the "
"print from the build plate."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_only_when_collides label"
msgid "Z Hop Only Over Printed Parts"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_only_when_collides description"
msgid ""
"Only perform a Z Hop when moving over printed parts which cannot be avoided "
"by horizontal motion by Avoid Printed Parts when Traveling."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop label"
msgid "Z Hop Height"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop description"
msgid "The height difference when performing a Z Hop."
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_after_extruder_switch label"
msgid "Z Hop After Extruder Switch"
msgstr ""
#: fdmprinter.def.json
msgctxt "retraction_hop_after_extruder_switch description"
msgid ""
"After the machine switched from one extruder to the other, the build plate "
"is lowered to create clearance between the nozzle and the print. This "
"prevents the nozzle from leaving oozed material on the outside of a print."
msgstr ""
#: fdmprinter.def.json
msgctxt "cooling label"
msgid "Cooling"
@ -2176,7 +2190,9 @@ msgctxt "cool_min_layer_time description"
msgid ""
"The minimum time spent in a layer. This forces the printer to slow down, to "
"at least spend the time set here in one layer. This allows the printed "
"material to cool down properly before printing the next layer."
"material to cool down properly before printing the next layer. Layers may "
"still take shorter than the minimal layer time if Lift Head is disabled and "
"if the Minimum Speed would otherwise be violated."
msgstr ""
#: fdmprinter.def.json
@ -2227,6 +2243,54 @@ msgid ""
"severe overhangs."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr label"
msgid "Support Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr description"
msgid ""
"The extruder train to use for printing the support. This is used in multi-"
"extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_infill_extruder_nr label"
msgid "Support Infill Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_infill_extruder_nr description"
msgid ""
"The extruder train to use for printing the infill of the support. This is "
"used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr_layer_0 label"
msgid "First Layer Support Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr_layer_0 description"
msgid ""
"The extruder train to use for printing the first layer of support infill. "
"This is used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_extruder_nr label"
msgid "Support Interface Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_extruder_nr description"
msgid ""
"The extruder train to use for printing the roofs and bottoms of the support. "
"This is used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_type label"
msgid "Support Placement"
@ -2687,6 +2751,18 @@ msgctxt "adhesion_type option raft"
msgid "Raft"
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_extruder_nr label"
msgid "Build Plate Adhesion Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_extruder_nr description"
msgid ""
"The extruder train to use for printing the skirt/brim/raft. This is used in "
"multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "skirt_line_count label"
msgid "Skirt Line Count"
@ -3100,66 +3176,6 @@ msgctxt "dual description"
msgid "Settings used for printing with multiple extruders."
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_extruder_nr label"
msgid "Build Plate Adhesion Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "adhesion_extruder_nr description"
msgid ""
"The extruder train to use for printing the skirt/brim/raft. This is used in "
"multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr label"
msgid "Support Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr description"
msgid ""
"The extruder train to use for printing the support. This is used in multi-"
"extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_infill_extruder_nr label"
msgid "Support Infill Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_infill_extruder_nr description"
msgid ""
"The extruder train to use for printing the infill of the support. This is "
"used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr_layer_0 label"
msgid "First Layer Support Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_extruder_nr_layer_0 description"
msgid ""
"The extruder train to use for printing the first layer of support infill. "
"This is used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_extruder_nr label"
msgid "Support Interface Extruder"
msgstr ""
#: fdmprinter.def.json
msgctxt "support_interface_extruder_nr description"
msgid ""
"The extruder train to use for printing the roofs and bottoms of the support. "
"This is used in multi-extrusion."
msgstr ""
#: fdmprinter.def.json
msgctxt "prime_tower_enable label"
msgid "Enable Prime Tower"
@ -3336,6 +3352,18 @@ msgid ""
"everything else fails to produce proper GCode."
msgstr ""
#: fdmprinter.def.json
msgctxt "carve_multiple_volumes label"
msgid "Remove Mesh Intersection"
msgstr ""
#: fdmprinter.def.json
msgctxt "carve_multiple_volumes description"
msgid ""
"Remove areas where multiple objecs are overlapping with each other. This is "
"may be used if merged dual material objects overlap with each other."
msgstr ""
#: fdmprinter.def.json
msgctxt "blackmagic label"
msgid "Special Modes"

View File

@ -1836,8 +1836,8 @@ msgstr "Suositeltu"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Laajennettu"
msgid "Custom"
msgstr "Mukautettu"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -1836,8 +1836,8 @@ msgstr "Recommandé"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Avancée"
msgid "Custom"
msgstr "Personnalisé"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -160,13 +160,13 @@ msgstr "Salvato su unità rimovibile {0} come {1}"
#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103
msgctxt "@action:button"
msgid "Eject"
msgstr "Espelli"
msgstr "Rimuovi"
#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103
#, python-brace-format
msgctxt "@action"
msgid "Eject removable device {0}"
msgstr "Espelli il dispositivo rimovibile {0}"
msgstr "Rimuovi il dispositivo rimovibile {0}"
#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:108
#, python-brace-format
@ -1836,8 +1836,8 @@ msgstr "Consigliata"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Avanzata"
msgid "Custom"
msgstr "Personalizzata"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18
@ -2008,7 +2008,7 @@ msgstr "Sel&eziona tutti i modelli"
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248
msgctxt "@action:inmenu menubar:edit"
msgid "&Clear Build Plate"
msgstr "&Cancella piano di stampa"
msgstr "&Cancellare piano di stampa"
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258
msgctxt "@action:inmenu menubar:file"

View File

@ -2257,12 +2257,12 @@ msgstr "Regola il posizionamento delle strutture di supporto. Il posizionamento
#: fdmprinter.def.json
msgctxt "support_type option buildplate"
msgid "Touching Buildplate"
msgstr "Sostegno solo delle pareti esterne"
msgstr "Contatto con il Piano di Stampa"
#: fdmprinter.def.json
msgctxt "support_type option everywhere"
msgid "Everywhere"
msgstr "In tutti i possibili punti"
msgstr "In Tutti i Possibili Punti"
#: fdmprinter.def.json
msgctxt "support_angle label"

View File

@ -1836,8 +1836,8 @@ msgstr "Aanbevolen"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Geavanceerd"
msgid "Custom"
msgstr "Aangepast"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -1836,8 +1836,8 @@ msgstr "Önerilen Ayarlar"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab"
msgid "Advanced"
msgstr "Gelişmiş"
msgid "Custom"
msgstr "Özel"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

Binary file not shown.

View File

@ -121,7 +121,7 @@ Item
Action
{
id: updateProfileAction;
enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings");
onTriggered: Cura.ContainerManager.updateQualityChanges();
}
@ -131,13 +131,17 @@ Item
id: resetProfileAction;
enabled: Cura.MachineManager.hasUserSettings
text: catalog.i18nc("@action:inmenu menubar:profile","&Discard current settings");
onTriggered: Cura.ContainerManager.clearUserContainers();
onTriggered:
{
forceActiveFocus();
Cura.ContainerManager.clearUserContainers();
}
}
Action
{
id: addProfileAction;
enabled: Cura.MachineManager.isActiveStackValid && Cura.MachineManager.hasUserSettings
enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings
text: catalog.i18nc("@action:inmenu menubar:profile","&Create profile from current settings...");
}

View File

@ -175,6 +175,14 @@ UM.Dialog
text: getMachineName()
implicitWidth: UM.Theme.getSize("standard_list_input").width
maximumLength: 40
//validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed.
validator: RegExpValidator
{
regExp: {
machineName.machine_name_validator.machineNameRegex
}
}
property var machine_name_validator: Cura.MachineNameValidator { }
anchors.bottom:parent.bottom
}

View File

@ -539,7 +539,7 @@ UM.MainWindow
target: Cura.MachineManager
onBlurSettings:
{
contentItem.focus = true
forceActiveFocus()
}
}

View File

@ -153,6 +153,7 @@ Menu
else
{
result.definition = "fdmprinter";
result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway.
}
return result;
}

View File

@ -13,7 +13,7 @@ Menu
Instantiator
{
model: Cura.ProfilesModel { }
model: Cura.ProfilesModel
MenuItem
{

View File

@ -251,6 +251,8 @@ UM.ManagementPage
{
id: renameDialog;
object: base.currentItem && base.currentItem.name ? base.currentItem.name : "";
property var machine_name_validator: Cura.MachineNameValidator { }
validName: renameDialog.newName.match(renameDialog.machine_name_validator.machineNameRegex) != null;
onAccepted:
{
Cura.MachineManager.renameMachine(base.currentItem.id, newName.trim());

View File

@ -29,7 +29,8 @@ UM.ManagementPage
}
else
{
result.definition = "fdmprinter"
result.definition = "fdmprinter";
result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway.
}
return result
}

View File

@ -62,7 +62,7 @@ UM.ManagementPage
Button
{
text: catalog.i18nc("@label", "Create")
enabled: base.canCreateProfile()
enabled: base.canCreateProfile() && !Cura.MachineManager.stacksHaveErrors
visible: base.canCreateProfile()
iconName: "list-add";

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
// Cura is released under the terms of the AGPLv3 or higher.
// Different than the name suggests, it is not always read-only.
import QtQuick 2.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1

View File

@ -197,7 +197,26 @@ Item {
// - The type of the value of any deeper container is an "object" (eg; is a function)
visible:
{
return showInheritButton && Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0;
if(!base.showInheritButton)
{
return false;
}
if(!propertyProvider.properties.enabled)
{
// Note: This is not strictly necessary since a disabled setting is hidden anyway.
// But this will cause the binding to be re-evaluated when the enabled property changes.
return false;
}
if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0)
{
return false;
}
if(globalPropertyProvider.properties.limit_to_extruder == null || globalPropertyProvider.properties.limit_to_extruder == -1)
{
return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0;
}
return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, globalPropertyProvider.properties.limit_to_extruder).indexOf(definition.key) >= 0;
}
height: parent.height;

View File

@ -99,9 +99,9 @@ ScrollView
when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0);
value:
{
if(!model.settable_per_extruder)
if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1)
{
//Not settable per extruder, so we must pick global.
//Not settable per extruder or there only is global, so we must pick global.
return Cura.MachineManager.activeMachineId;
}
if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0)

View File

@ -380,7 +380,7 @@ Rectangle
Component.onCompleted:
{
modesListModel.append({ text: catalog.i18nc("@title:tab", "Recommended"), item: sidebarSimple })
modesListModel.append({ text: catalog.i18nc("@title:tab", "Advanced"), item: sidebarAdvanced })
modesListModel.append({ text: catalog.i18nc("@title:tab", "Custom"), item: sidebarAdvanced })
sidebarContents.push({ "item": modesListModel.get(base.currentModeIndex).item, "immediate": true });
}

View File

@ -6,6 +6,7 @@ definition = fdmprinter
[metadata]
type = quality
quality_type = high
global_quality = True
weight = 1
[values]

View File

@ -6,6 +6,7 @@ definition = fdmprinter
[metadata]
type = quality
quality_type = low
global_quality = True
weight = -1
[values]

View File

@ -6,6 +6,7 @@ definition = fdmprinter
[metadata]
type = quality
quality_type = normal
global_quality = True
weight = 0
[values]

View File

@ -1,125 +1,23 @@
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_abs_ultimaker3_AA_0.4
weight = -2
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 5
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.2
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 240
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 16
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
raft_base_speed = =0.75 * raft_speed
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_abs_ultimaker3_AA_0.4
weight = -2
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 240
prime_tower_size = 16
skin_overlap = 20
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
wall_thickness = 1

View File

@ -1,125 +1,23 @@
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_abs_ultimaker3_AA_0.4
weight = -1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 5
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 7
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.15
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 235
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 16
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_abs_ultimaker3_AA_0.4
weight = -1
[values]
cool_min_speed = 7
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 235
material_standby_temperature = 100
prime_tower_size = 16
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)

View File

@ -1,125 +1,21 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_abs_ultimaker3_AA_0.4
weight = 1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 5
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.06
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 225
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 16
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 50
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 50)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_abs_ultimaker3_AA_0.4
weight = 1
[values]
cool_min_speed = 12
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_standby_temperature = 100
prime_tower_size = 16
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)

View File

@ -1,125 +1,21 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_abs_ultimaker3_AA_0.4
weight = 0
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 5
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 230
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 16
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_abs_ultimaker3_AA_0.4
weight = 0
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 230
material_standby_temperature = 100
prime_tower_size = 16
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)

View File

@ -1,125 +1,22 @@
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_cpe_ultimaker3_AA_0.4
weight = -2
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.2
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 70
material_print_temperature = 250
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 17
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_cpe_ultimaker3_AA_0.4
weight = -2
[values]
material_print_temperature = 250
material_standby_temperature = 100
prime_tower_size = 17
skin_overlap = 20
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
wall_thickness = 1

View File

@ -1,125 +1,21 @@
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_cpe_ultimaker3_AA_0.4
weight = -1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 7
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.15
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 70
material_print_temperature = 245
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 17
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_cpe_ultimaker3_AA_0.4
weight = -1
[values]
cool_min_speed = 7
material_print_temperature = 245
material_standby_temperature = 100
prime_tower_size = 17
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)

View File

@ -1,125 +1,21 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_cpe_ultimaker3_AA_0.4
weight = 1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.06
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 70
material_print_temperature = 235
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 17
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 50
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 50)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_cpe_ultimaker3_AA_0.4
weight = 1
[values]
cool_min_speed = 12
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_standby_temperature = 100
prime_tower_size = 17
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50)

View File

@ -1,125 +1,21 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_cpe_ultimaker3_AA_0.4
weight = 0
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 70
material_print_temperature = 240
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
prime_tower_enable = True
prime_tower_size = 17
prime_tower_wipe_enabled = True
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_cpe_ultimaker3_AA_0.4
weight = 0
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 240
material_standby_temperature = 100
prime_tower_size = 17
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)

View File

@ -1,127 +1,33 @@
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_nylon_ultimaker3_AA_0.4
weight = -2
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = raft
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 40
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_overlap_mm = 0.05
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.2
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 60
material_print_temperature = 255
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40
ooze_shield_dist = 2
ooze_shield_enabled = False
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_amount = 8
retraction_count_max = 25
retraction_extra_prime_amount = 0
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_speed = 25
skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_surface_layers = 2
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
brim_width = 7
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
support_bottom_stair_step_height = 0.3
wall_line_width_x = =wall_line_width
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_nylon_ultimaker3_AA_0.4
weight = -2
[values]
adhesion_type = raft
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.4, 2)
line_width = =machine_nozzle_size
material_print_temperature = 255
material_standby_temperature = 100
ooze_shield_angle = 40
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
wall_line_width_x = =wall_line_width

View File

@ -1,125 +1,33 @@
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_nylon_ultimaker3_AA_0.4
weight = -1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = raft
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 40
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_overlap_mm = 0.05
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.15
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 60
material_print_temperature = 250
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40
ooze_shield_dist = 2
ooze_shield_enabled = False
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_amount = 8
retraction_count_max = 25
retraction_extra_prime_amount = 0
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_speed = 25
skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_surface_layers = 2
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
brim_width = 7
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
support_bottom_stair_step_height = 0.3
wall_line_width_x = =wall_line_width
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_nylon_ultimaker3_AA_0.4
weight = -1
[values]
adhesion_type = raft
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.4, 2)
line_width = =machine_nozzle_size
material_print_temperature = 250
material_standby_temperature = 100
ooze_shield_angle = 40
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
wall_line_width_x = =wall_line_width

View File

@ -1,125 +1,32 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_nylon_ultimaker3_AA_0.4
weight = 1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = raft
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 40
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 15
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_overlap_mm = 0.05
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.06
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 60
material_print_temperature = 245
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40
ooze_shield_dist = 2
ooze_shield_enabled = False
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_amount = 8
retraction_count_max = 25
retraction_extra_prime_amount = 0
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_speed = 25
skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_surface_layers = 2
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
brim_width = 7
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
support_bottom_stair_step_height = 0.3
wall_line_width_x = =wall_line_width
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_nylon_ultimaker3_AA_0.4
weight = 1
[values]
adhesion_type = raft
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 15
infill_line_width = =round(line_width * 0.5 / 0.4, 2)
line_width = =machine_nozzle_size
material_standby_temperature = 100
ooze_shield_angle = 40
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
wall_line_width_x = =wall_line_width

View File

@ -1,125 +1,32 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_nylon_ultimaker3_AA_0.4
weight = 0
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = raft
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 40
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_overlap_mm = 0.05
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 60
material_print_temperature = 245
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40
ooze_shield_dist = 2
ooze_shield_enabled = False
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_amount = 8
retraction_count_max = 25
retraction_extra_prime_amount = 0
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_speed = 25
skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_surface_layers = 2
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
brim_width = 7
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
support_bottom_stair_step_height = 0.3
wall_line_width_x = =wall_line_width
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_nylon_ultimaker3_AA_0.4
weight = 0
[values]
adhesion_type = raft
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.4, 2)
line_width = =machine_nozzle_size
material_standby_temperature = 100
ooze_shield_angle = 40
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
wall_line_width_x = =wall_line_width

View File

@ -1,125 +1,26 @@
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_pla_ultimaker3_AA_0.4
weight = -2
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.2
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 205
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 15
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 35 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 50 / 70)
speed_wall_0 = =math.ceil(speed_wall * 35 / 50)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
material = generic_pla_ultimaker3_AA_0.4
weight = -2
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_fan_speed = 100
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = 205
material_standby_temperature = 100
prime_tower_enable = False
skin_overlap = 20
speed_topbottom = =math.ceil(speed_print * 35 / 70)
speed_wall = =math.ceil(speed_print * 50 / 70)
speed_wall_0 = =math.ceil(speed_wall * 35 / 50)
top_bottom_thickness = 1
wall_thickness = 1

View File

@ -1,125 +1,25 @@
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_pla_ultimaker3_AA_0.4
weight = -1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.15
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 200
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 15
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 80
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 80)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 80)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
material = generic_pla_ultimaker3_AA_0.4
weight = -1
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_fan_speed = 100
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
speed_print = 80
speed_topbottom = =math.ceil(speed_print * 30 / 80)
speed_wall = =math.ceil(speed_print * 40 / 80)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
top_bottom_thickness = 1
wall_thickness = 1

View File

@ -1,125 +1,26 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_pla_ultimaker3_AA_0.4
weight = 1
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5
cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.06
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 195
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 60)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
material = generic_pla_ultimaker3_AA_0.4
weight = 1
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_fan_speed = 100
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
cool_min_speed = 10
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_print_temperature = 195
material_standby_temperature = 100
skin_overlap = 10
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 30 / 60)
top_bottom_thickness = 1
wall_thickness = 1

View File

@ -1,126 +1,23 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_pla_ultimaker3_AA_0.4
weight = 0
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5
cool_min_speed = 7
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 200
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 15
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = normal
material = generic_pla_ultimaker3_AA_0.4
weight = 0
[values]
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_fan_speed_max = =cool_fan_speed
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_fan_speed = 100
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20
cool_min_speed = 7
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
skin_overlap = 10
top_bottom_thickness = 1
wall_thickness = 1

View File

@ -11,116 +11,3 @@ material = generic_pva_ultimaker3_AA_0.4
supported = false
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 3
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 215
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = 0
raft_base_speed = 20
raft_base_thickness = 0.3
raft_interface_line_spacing = 0.5
raft_interface_line_width = 0.5
raft_interface_speed = 20
raft_interface_thickness = 0.2
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 2
retraction_count_max = 10
retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 5
retraction_prime_speed = 15
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 35
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 35)
speed_wall_0 = =math.ceil(speed_wall * 25 / 30)
speed_wall_x = =speed_wall
support_angle = 45
support_bottom_height = =layer_height * 2
support_bottom_stair_step_height = =layer_height
support_infill_rate = 30
support_interface_enable = True
support_join_distance = 3
support_line_width = =round(line_width * 0.4 / 0.35, 2)
support_offset = 3
support_pattern = triangles
support_use_towers = False
support_xy_distance = =wall_line_width_0 * 3
support_xy_distance_overhang = =wall_line_width_0 / 2
support_z_distance = 0
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 8
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_top_distance = =support_z_distance
support_bottom_distance = =support_z_distance / 2
raft_surface_thickness = =resolveOrValue('layer_height')
cool_fan_speed_max = =cool_fan_speed
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
material_bed_temperature = 60
ooze_shield_dist = 2
retraction_speed = 25
switch_extruder_retraction_speeds = 20

View File

@ -11,116 +11,3 @@ weight = 0
supported = false
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 230
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 16
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20

View File

@ -11,116 +11,3 @@ weight = 0
supported = false
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 70
material_print_temperature = 240
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 17
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20

View File

@ -11,116 +11,3 @@ weight = 0
supported = false
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = raft
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 40
cool_fan_speed_max = 100
cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_overlap_mm = 0.05
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_bed_temperature = 60
material_print_temperature = 245
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40
ooze_shield_dist = 2
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_amount = 8
retraction_count_max = 25
retraction_extra_prime_amount = 0
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_speed = 25
skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
switch_extruder_prime_speed = 30
switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40
top_bottom_thickness = 1.2
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_thickness = 1.3
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_surface_layers = 2
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
brim_width = 7
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
support_bottom_stair_step_height = 0.3
wall_line_width_x = =wall_line_width

View File

@ -11,117 +11,3 @@ weight = 0
supported = false
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 7
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5
cool_min_speed = 7
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 200
material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False
prime_tower_size = 15
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_wipe_enabled = True
raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2
raft_speed = =speed_print / 60 * 30
raft_interface_speed = =raft_speed * 0.75
raft_base_speed = =0.75 * raft_speed
raft_acceleration = =acceleration_print
raft_jerk = =jerk_print
retraction_count_max = 25
retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 70
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 70)
speed_wall_0 = =math.ceil(speed_wall * 20 / 30)
speed_wall_x = =speed_wall
support_angle = 60
support_bottom_distance = =support_z_distance / 2
support_top_distance = =support_z_distance
support_xy_distance = =wall_line_width_0 * 2.5
support_xy_distance_overhang = =wall_line_width_0
support_z_distance = =layer_height * 2
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_line_width = =line_width
support_pattern = zigzag
support_infill_rate = 15
support_join_distance = 2
support_offset = 0.2
support_interface_enable = False
support_use_towers = True
raft_margin = 15
raft_airgap = 0.3
raft_surface_layers = 2
raft_surface_thickness = =resolveOrValue('layer_height')
raft_interface_thickness = =resolveOrValue('layer_height') * 1.5
raft_interface_line_width = =line_width * 2
raft_interface_line_spacing = =raft_interface_line_width + 0.2
cool_fan_speed_max = =cool_fan_speed
support_bottom_height = =extruderValue(support_interface_extruder_nr, 'support_interface_height')
retraction_amount = 6.5
cool_fan_speed = 100
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed
retraction_speed = 25
support_bottom_stair_step_height = 0.3
switch_extruder_prime_speed = =switch_extruder_retraction_speeds
switch_extruder_retraction_amount = =machine_heat_zone_length
switch_extruder_retraction_speeds = 20

View File

@ -1,126 +1,16 @@
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
weight = -2
material = generic_pva_ultimaker3_BB_0.4
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 3
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.2
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 225
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = 0
raft_base_speed = 20
raft_base_thickness = 0.3
raft_interface_line_spacing = 0.5
raft_interface_line_width = 0.5
raft_interface_speed = 20
raft_interface_thickness = 0.2
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 2
retraction_count_max = 10
retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 5
retraction_prime_speed = 15
skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 35
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 35)
speed_wall_0 = =math.ceil(speed_wall * 25 / 30)
speed_wall_x = =speed_wall
support_angle = 45
support_bottom_height = =layer_height * 2
support_bottom_stair_step_height = =layer_height
support_infill_rate = 25
support_interface_enable = True
support_join_distance = 3
support_line_width = =round(line_width * 0.4 / 0.35, 2)
support_offset = 3
support_pattern = triangles
support_use_towers = False
support_xy_distance = =wall_line_width_0 * 3
support_xy_distance_overhang = =wall_line_width_0 / 2
support_z_distance = 0
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 8
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_top_distance = =support_z_distance
support_bottom_distance = =support_z_distance / 2
raft_surface_thickness = =resolveOrValue('layer_height')
cool_fan_speed_max = =cool_fan_speed
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
material_bed_temperature = 60
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_speed = 25
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Draft Print
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
weight = -2
material = generic_pva_ultimaker3_BB_0.4
[values]
material_print_temperature = 225
material_standby_temperature = 100
skin_overlap = 20

View File

@ -1,125 +1,16 @@
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
weight = -1
type = quality
quality_type = fast
material = generic_pva_ultimaker3_BB_0.4
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 3
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.15
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 220
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = 0
raft_base_speed = 20
raft_base_thickness = 0.3
raft_interface_line_spacing = 0.5
raft_interface_line_width = 0.5
raft_interface_speed = 20
raft_interface_thickness = 0.2
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 2
retraction_count_max = 10
retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 5
retraction_prime_speed = 15
skin_overlap = 15
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 35
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 35)
speed_wall_0 = =math.ceil(speed_wall * 25 / 30)
speed_wall_x = =speed_wall
support_angle = 45
support_bottom_height = =layer_height * 2
support_bottom_stair_step_height = =layer_height
support_infill_rate = 25
support_interface_enable = True
support_join_distance = 3
support_line_width = =round(line_width * 0.4 / 0.35, 2)
support_offset = 3
support_pattern = triangles
support_use_towers = False
support_xy_distance = =wall_line_width_0 * 3
support_xy_distance_overhang = =wall_line_width_0 / 2
support_z_distance = 0
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 8
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_top_distance = =support_z_distance
support_bottom_distance = =support_z_distance / 2
raft_surface_thickness = =resolveOrValue('layer_height')
cool_fan_speed_max = =cool_fan_speed
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
material_bed_temperature = 60
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_speed = 25
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Fast Print
definition = ultimaker3
[metadata]
weight = -1
type = quality
quality_type = fast
material = generic_pva_ultimaker3_BB_0.4
[values]
material_print_temperature = 220
material_standby_temperature = 100
skin_overlap = 15

View File

@ -1,126 +1,15 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
weight = 0
type = quality
quality_type = high
material = generic_pva_ultimaker3_BB_0.4
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 3
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.06
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 215
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = 0
raft_base_speed = 20
raft_base_thickness = 0.3
raft_interface_line_spacing = 0.5
raft_interface_line_width = 0.5
raft_interface_speed = 20
raft_interface_thickness = 0.2
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 2
retraction_count_max = 10
retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 5
retraction_prime_speed = 15
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 35
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 35)
speed_wall_0 = =math.ceil(speed_wall * 25 / 30)
speed_wall_x = =speed_wall
support_angle = 45
support_bottom_height = =layer_height * 2
support_bottom_stair_step_height = =layer_height
support_infill_rate = 35
support_interface_enable = True
support_join_distance = 3
support_line_width = =round(line_width * 0.4 / 0.35, 2)
support_offset = 3
support_pattern = triangles
support_use_towers = False
support_xy_distance = =wall_line_width_0 * 3
support_xy_distance_overhang = =wall_line_width_0 / 2
support_z_distance = 0
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 8
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_top_distance = =support_z_distance
support_bottom_distance = =support_z_distance / 2
raft_surface_thickness = =resolveOrValue('layer_height')
cool_fan_speed_max = =cool_fan_speed
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
material_bed_temperature = 60
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_speed = 25
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
weight = 0
type = quality
quality_type = high
material = generic_pva_ultimaker3_BB_0.4
[values]
support_infill_rate = 35
material_standby_temperature = 100

View File

@ -1,126 +1,15 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
weight = 0
type = quality
quality_type = normal
material = generic_pva_ultimaker3_BB_0.4
[values]
acceleration_enabled = True
acceleration_infill = =acceleration_print
acceleration_layer_0 = =acceleration_topbottom
acceleration_prime_tower = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_print = 4000
acceleration_support = =math.ceil(acceleration_print * 2000 / 4000)
acceleration_support_infill = =acceleration_support
acceleration_support_interface = =acceleration_topbottom
acceleration_topbottom = =math.ceil(acceleration_print * 500 / 4000)
acceleration_wall = =math.ceil(acceleration_print * 1000 / 4000)
acceleration_wall_0 = =math.ceil(acceleration_wall * 500 / 1000)
acceleration_wall_x = =acceleration_wall
adhesion_type = brim
brim_width = 3
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
cool_fan_speed = 50
cool_min_layer_time = 5
cool_min_speed = 5
infill_line_width = =round(line_width * 0.5 / 0.35, 2)
infill_pattern = triangles
infill_sparse_density = 20
infill_wipe_dist = 0
jerk_enabled = True
jerk_infill = =jerk_print
jerk_layer_0 = =jerk_topbottom
jerk_prime_tower = =math.ceil(jerk_print * 15 / 25)
jerk_print = 25
jerk_support = =math.ceil(jerk_print * 15 / 25)
jerk_support_infill = =jerk_support
jerk_support_interface = =jerk_topbottom
jerk_topbottom = =math.ceil(jerk_print * 5 / 25)
jerk_wall = =math.ceil(jerk_print * 10 / 25)
jerk_wall_0 = =math.ceil(jerk_wall * 5 / 10)
jerk_wall_x = =jerk_wall
layer_height = 0.1
layer_height_0 = =round(machine_nozzle_size / 1.5, 2)
line_width = =machine_nozzle_size * 0.875
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_print_temperature = 215
material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 60
ooze_shield_enabled = False
prime_tower_enable = True
prime_tower_size = 15
prime_tower_wipe_enabled = True
raft_acceleration = =acceleration_layer_0
raft_airgap = 0
raft_base_speed = 20
raft_base_thickness = 0.3
raft_interface_line_spacing = 0.5
raft_interface_line_width = 0.5
raft_interface_speed = 20
raft_interface_thickness = 0.2
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_speed = 25
raft_surface_layers = 1
retraction_amount = 2
retraction_count_max = 10
retraction_extrusion_window = =retraction_amount
retraction_hop = 2
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 5
retraction_prime_speed = 15
skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 35
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 20 / 35)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 35)
speed_wall_0 = =math.ceil(speed_wall * 25 / 30)
speed_wall_x = =speed_wall
support_angle = 45
support_bottom_height = =layer_height * 2
support_bottom_stair_step_height = =layer_height
support_infill_rate = 30
support_interface_enable = True
support_join_distance = 3
support_line_width = =round(line_width * 0.4 / 0.35, 2)
support_offset = 3
support_pattern = triangles
support_use_towers = False
support_xy_distance = =wall_line_width_0 * 3
support_xy_distance_overhang = =wall_line_width_0 / 2
support_z_distance = 0
switch_extruder_prime_speed = 15
switch_extruder_retraction_amount = 8
top_bottom_thickness = 1
travel_avoid_distance = 3
travel_compensate_overlapping_walls_enabled = True
wall_0_inset = 0
wall_line_width_x = =round(line_width * 0.3 / 0.35, 2)
wall_thickness = 1
support_top_distance = =support_z_distance
support_bottom_distance = =support_z_distance / 2
raft_surface_thickness = =resolveOrValue('layer_height')
cool_fan_speed_max = =cool_fan_speed
cool_min_layer_time_fan_speed_max = 10
infill_overlap_mm = =infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0
material_bed_temperature = 60
ooze_shield_dist = 2
retraction_extra_prime_amount = 0
retraction_speed = 25
switch_extruder_retraction_speeds = 20
[general]
version = 2
name = Normal Quality
definition = ultimaker3
[metadata]
weight = 0
type = quality
quality_type = normal
material = generic_pva_ultimaker3_BB_0.4
[values]
support_infill_rate = 30
material_standby_temperature = 100

View File

@ -0,0 +1,13 @@
[general]
version = 2
name = Draft Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = draft
global_quality = True
weight = -2
[values]
layer_height = 0.2

View File

@ -0,0 +1,13 @@
[general]
version = 2
name = Fast Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = fast
global_quality = True
weight = -1
[values]
layer_height = 0.15

View File

@ -0,0 +1,13 @@
[general]
version = 2
name = High Quality
definition = ultimaker3
[metadata]
type = quality
quality_type = high
global_quality = True
weight = 0
[values]
layer_height = 0.06

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