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 packaging
debian* 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) DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura)
install(FILES ${CMAKE_BINARY_DIR}/cura.desktop install(FILES ${CMAKE_BINARY_DIR}/cura.desktop
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES cura.appdata.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/appdata)
install(FILES cura.sharedmimeinfo install(FILES cura.sharedmimeinfo
DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/ DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/
RENAME cura.xml ) 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=3D Printing Software
GenericName[de]=3D-Druck-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=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 Exec=@CMAKE_INSTALL_FULL_BINDIR@/cura %F
TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura
Icon=@CMAKE_INSTALL_FULL_DATADIR@/cura/resources/images/cura-icon.png 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. ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas.
class BuildVolume(SceneNode): class BuildVolume(SceneNode):
VolumeOutlineColor = Color(12, 169, 227, 255) 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() raftThicknessChanged = Signal()
@ -45,6 +48,10 @@ class BuildVolume(SceneNode):
self._shader = None self._shader = None
self._origin_mesh = None
self._origin_line_length = 20
self._origin_line_width = 0.5
self._grid_mesh = None self._grid_mesh = None
self._grid_shader = None self._grid_shader = None
@ -128,6 +135,7 @@ class BuildVolume(SceneNode):
self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) 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) renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True)
if self._disallowed_area_mesh: if self._disallowed_area_mesh:
renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) 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()) 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 = MeshBuilder()
mb.addQuad( mb.addQuad(
Vector(min_w, min_h - 0.2, min_d), Vector(min_w, min_h - 0.2, min_d),
@ -481,6 +520,15 @@ class BuildVolume(SceneNode):
def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"): def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"):
return self._getSettingFromExtruder(setting_key, "adhesion_extruder_nr", property) 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 ## Private convenience function to get a setting from the support infill
# extruder. # 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?") raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?")
support_expansion = 0 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") support_expansion += self._getSettingFromSupportInfillExtruder("support_offset")
farthest_shield_distance = 0 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")) 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. 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, max(self._getSettingFromAllExtruders("infill_wipe_dist")))
move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist")) avoid_enabled_per_extruder = self._getSettingFromAllExtruders(("travel_avoid_other_parts"))
if self._getSettingFromAdhesionExtruder("travel_avoid_distance"): avoid_distance_per_extruder = self._getSettingFromAllExtruders("travel_avoid_distance")
move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("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. #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. #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"] _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"] _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"] _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: if path:
instance.setPath(path) instance.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f: with SaveFile(path, "wt") as f:
f.write(data) f.write(data)
for stack in ContainerRegistry.getInstance().findContainerStacks(): for stack in ContainerRegistry.getInstance().findContainerStacks():
@ -409,7 +409,7 @@ class CuraApplication(QtApplication):
path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name) path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name)
if path: if path:
stack.setPath(path) stack.setPath(path)
with SaveFile(path, "wt", -1, "utf-8") as f: with SaveFile(path, "wt") as f:
f.write(data) f.write(data)
@ -549,11 +549,12 @@ class CuraApplication(QtApplication):
qmlRegisterType(cura.Settings.ExtrudersModel, "Cura", 1, 0, "ExtrudersModel") qmlRegisterType(cura.Settings.ExtrudersModel, "Cura", 1, 0, "ExtrudersModel")
qmlRegisterType(cura.Settings.ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") 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.QualityAndUserProfilesModel, "Cura", 1, 0, "QualityAndUserProfilesModel")
qmlRegisterType(cura.Settings.UserProfilesModel, "Cura", 1, 0, "UserProfilesModel") qmlRegisterType(cura.Settings.UserProfilesModel, "Cura", 1, 0, "UserProfilesModel")
qmlRegisterType(cura.Settings.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(cura.Settings.MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler")
qmlRegisterType(cura.Settings.QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") 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) 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 it downwards if bottom is above platform
move_vector = Vector() 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 z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0
move_vector = move_vector.set(y=-bbox.bottom + z_offset) 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.Operation import Operation
from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.GroupedOperation import GroupedOperation
from UM.Scene.SceneNode import SceneNode
## A specialised operation designed specifically to modify the previous operation. ## A specialised operation designed specifically to modify the previous operation.
class PlatformPhysicsOperation(Operation): class PlatformPhysicsOperation(Operation):
def __init__(self, node, translation): def __init__(self, node, translation):
super().__init__() super().__init__()
self._node = node self._node = node
self._old_position = node.getPosition() self._old_transformation = node.getLocalTransformation()
self._new_position = node.getPosition() + translation self._translation = translation
self._always_merge = True self._always_merge = True
def undo(self): def undo(self):
self._node.setPosition(self._old_position) self._node.setTransformation(self._old_transformation)
def redo(self): def redo(self):
self._node.setPosition(self._new_position) self._node.translate(self._translation, SceneNode.TransformSpace.World)
def mergeWith(self, other): def mergeWith(self, other):
group = GroupedOperation() group = GroupedOperation()
@ -28,4 +29,4 @@ class PlatformPhysicsOperation(Operation):
return group return group
def __repr__(self): 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_state = ""
self._printer_type = "unknown" 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") raise NotImplementedError("requestWrite needs to be implemented")
## Signals ## Signals

View File

@ -27,10 +27,17 @@ class QualityManager:
# specified then the currently selected machine definition is used. # specified then the currently selected machine definition is used.
# \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then # \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
# the current set of selected materials is used. # 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): def findQualityByName(self, quality_name, machine_definition=None, material_containers=None):
criteria = {"type": "quality", "name": quality_name} 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. ## 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 # \param material_containers (Optional) \type{List[ContainerInstance]} If nothing is specified then
# the current set of selected materials is used. # the current set of selected materials is used.
# \return the matching quality container \type{ContainerInstance} # \return the matching quality container \type{ContainerInstance}
def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None): def findQualityByQualityType(self, quality_type, machine_definition=None, material_containers=None, **kwargs):
criteria = {"type": "quality"} criteria = kwargs
criteria["type"] = "quality"
if quality_type: if quality_type:
criteria["quality_type"] = quality_type criteria["quality_type"] = quality_type
result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) 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. # \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): def _getBasicMaterials(self, material_container):
base_material = material_container.getMetaDataEntry("material") 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()) definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId())
else: else:
definition_id = "fdmprinter" definition_id = "fdmprinter"
@ -218,7 +227,7 @@ class QualityManager:
result = [] result = []
for container in containers: for container in containers:
# If the machine specifies we should filter by material, exclude containers that do not match any active material. # 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 continue
result.append(container) result.append(container)
return result 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. # \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): def _set_parent(self, new_parent):
if new_parent: if new_parent:
self._node.setPosition(self._node.getWorldPosition() - new_parent.getWorldPosition())
current_parent = self._node.getParent() current_parent = self._node.getParent()
if current_parent: if current_parent:
self._node.scale(current_parent.getScale() / new_parent.getScale()) # Special casing for groups that have been removed.
self._node.rotate(current_parent.getOrientation()) # In that case we want to put them back where they belong before checking the depth difference.
else: # If we don't, we always get 0.
self._node.scale(Vector(1, 1, 1) / new_parent.getScale()) old_parent = new_parent.callDecoration("getOldParent")
self._node.rotate(new_parent.getOrientation().getInverse()) 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) self._node.setParent(new_parent)

View File

@ -611,13 +611,12 @@ class ContainerManager(QObject):
if base_name is None: if base_name is None:
base_name = quality_name base_name = quality_name
# Try to find a Quality with the name. # Try to find a Quality with the name.
containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances)
if containers: if container:
container = containers[0] UM.Logger.log("d", "We found a quality to duplicate.")
return self._duplicateQualityForMachineType(container, base_name, machine_definition) 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. # Assume it is a quality changes.
return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition) return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition)
@ -650,7 +649,10 @@ class ContainerManager(QObject):
new_change_instances = [] new_change_instances = []
for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name, for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name,
machine_definition): 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_container = container.duplicate(new_unique_id, base_name)
new_change_instances.append(new_container) new_change_instances.append(new_container)
self._container_registry.addContainer(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. profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader.
except Exception as e: 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. # 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))} 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! if profile_or_list: # Success!
name_seed = os.path.splitext(os.path.basename(file_name))[0] 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: if type(profile_or_list) is not list:
profile = profile_or_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()) } return { "status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile.getName()) }
else: else:
profile_index = -1 profile_index = -1
global_profile = None global_profile = None
new_name = self.uniqueName(name_seed)
for profile in profile_or_list: for profile in profile_or_list:
if profile_index >= 0: if profile_index >= 0:
if len(machine_extruders) > profile_index: if len(machine_extruders) > profile_index:

View File

@ -50,8 +50,11 @@ class ExtruderManager(QObject):
@pyqtProperty(int, notify = extrudersChanged) @pyqtProperty(int, notify = extrudersChanged)
def extruderCount(self): def extruderCount(self):
if not UM.Application.getInstance().getGlobalContainerStack(): if not UM.Application.getInstance().getGlobalContainerStack():
return 0 # No active machine, so no extruders. return 0 # No active machine, so no extruders.
return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()]) try:
return len(self._extruder_trains[UM.Application.getInstance().getGlobalContainerStack().getId()])
except KeyError:
return 0
@pyqtProperty("QVariantMap", notify=extrudersChanged) @pyqtProperty("QVariantMap", notify=extrudersChanged)
def extruderIds(self): def extruderIds(self):
@ -265,18 +268,26 @@ class ExtruderManager(QObject):
container_registry.addContainer(container_stack) container_registry.addContainer(container_stack)
def getAllExtruderValues(self, setting_key): 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() global_container_stack = UM.Application.getInstance().getGlobalContainerStack()
multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 if global_container_stack.getProperty("machine_extruder_count", "value") <= 1:
if not multi_extrusion: return [global_container_stack.getProperty(setting_key, property)]
return [global_container_stack.getProperty(setting_key, "value")]
result = [] result = []
for index in self.extruderIds: for index in self.extruderIds:
extruder_stack_id = self.extruderIds[str(index)] extruder_stack_id = self.extruderIds[str(index)]
stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0]
result.append(stack.getProperty(setting_key, "value")) result.append(stack.getProperty(setting_key, property))
return result return result
## Removes the container stack and user profile for the extruders for a specific machine. ## Removes the container stack and user profile for the extruders for a specific machine.
# #
# \param machine_id The machine to remove the extruders for. # \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.activeVariantChanged)
self.globalContainerChanged.connect(self.activeQualityChanged) self.globalContainerChanged.connect(self.activeQualityChanged)
self._active_stack_valid = None self._stacks_have_errors = None
self._onGlobalContainerChanged() self._onGlobalContainerChanged()
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
@ -74,7 +74,7 @@ class MachineManager(QObject):
self._auto_hotends_changed = {} self._auto_hotends_changed = {}
self._material_incompatible_message = Message(catalog.i18nc("@info:status", 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) 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() activeMaterialChanged = pyqtSignal()
@ -85,6 +85,7 @@ class MachineManager(QObject):
globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed.
activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack 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 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 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.nameChanged.connect(self._onMachineNameChanged)
self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged) self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged)
self._global_container_stack.propertyChanged.connect(self._onPropertyChanged) 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"}) if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1:
quality.nameChanged.connect(self._onQualityNameChanged) # 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): def _onActiveExtruderStackChanged(self):
self.blurSettings.emit() # Ensure no-one has focus. self.blurSettings.emit() # Ensure no-one has focus.
old_active_container_stack = self._active_container_stack old_active_container_stack = self._active_container_stack
if self._active_container_stack and self._active_container_stack != self._global_container_stack: if self._active_container_stack and self._active_container_stack != self._global_container_stack:
@ -246,10 +268,7 @@ class MachineManager(QObject):
else: else:
self._active_container_stack = self._global_container_stack self._active_container_stack = self._global_container_stack
old_active_stack_valid = self._active_stack_valid self._updateStacksHaveErrors()
self._active_stack_valid = not self._checkStackForErrors(self._active_container_stack)
if old_active_stack_valid != self._active_stack_valid:
self.activeStackValidationChanged.emit()
if old_active_container_stack != self._active_container_stack: if old_active_container_stack != self._active_container_stack:
# Many methods and properties related to the active quality actually depend # Many methods and properties related to the active quality actually depend
@ -272,18 +291,18 @@ class MachineManager(QObject):
self.activeStackValueChanged.emit() self.activeStackValueChanged.emit()
if property_name == "validationState": 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"): if self._active_container_stack.getProperty(key, "settable_per_extruder"):
changed_validation_state = self._active_container_stack.getProperty(key, property_name) changed_validation_state = self._active_container_stack.getProperty(key, property_name)
else: else:
changed_validation_state = self._global_container_stack.getProperty(key, property_name) 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): if changed_validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError):
self._active_stack_valid = False self._stacks_have_errors = True
self.activeStackValidationChanged.emit() self.stacksValidationChanged.emit()
else: else:
if not self._checkStackForErrors(self._active_container_stack) and not self._checkStackForErrors(self._global_container_stack): # Normal check
self._active_stack_valid = True self._updateStacksHaveErrors()
self.activeStackValidationChanged.emit()
@pyqtSlot(str) @pyqtSlot(str)
def setActiveMachine(self, stack_id): def setActiveMachine(self, stack_id):
@ -337,15 +356,17 @@ class MachineManager(QObject):
def _createUniqueName(self, container_type, current_name, new_name, fallback_name): 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) return UM.Settings.ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name)
## Convenience function to check if a stack has errors. def _checkStacksHaveErrors(self):
def _checkStackForErrors(self, stack): if self._global_container_stack is not None and self._global_container_stack.hasErrors():
if stack is None: return True
return False
for key in stack.getAllKeys(): if self._global_container_stack is None:
validation_state = stack.getProperty(key, "validationState") return False
if validation_state in (UM.Settings.ValidatorState.Exception, UM.Settings.ValidatorState.MaximumError, UM.Settings.ValidatorState.MinimumError): stacks = list(ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()))
for stack in stacks:
if stack.hasErrors():
return True return True
return False return False
## Remove all instances from the top instanceContainer (effectively removing all user-changed settings) ## 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: for container in send_emits_containers:
container.sendPostponedEmits() container.sendPostponedEmits()
## Check if the global profile does not contain error states ## Check if none of the stacks contain error states
# Note that the _active_stack_valid is cached due to performance issues # Note that the _stacks_have_errors is cached due to performance issues
# Calling _checkStackForErrors on every change is simply too expensive # Calling _checkStack(s)ForErrors on every change is simply too expensive
@pyqtProperty(bool, notify = activeStackValidationChanged) @pyqtProperty(bool, notify = stacksValidationChanged)
def isActiveStackValid(self): def stacksHaveErrors(self):
return bool(self._active_stack_valid) return bool(self._stacks_have_errors)
@pyqtProperty(str, notify = activeStackChanged) @pyqtProperty(str, notify = activeStackChanged)
def activeUserProfileId(self): def activeUserProfileId(self):
@ -566,7 +587,7 @@ class MachineManager(QObject):
quality = self._active_container_stack.findContainer(type = "quality") quality = self._active_container_stack.findContainer(type = "quality")
if quality: if quality:
return Util.parseBool(quality.getMetaDataEntry("supported", True)) return Util.parseBool(quality.getMetaDataEntry("supported", True))
return "" return False
## Get the Quality ID associated with the currently active extruder ## Get the Quality ID associated with the currently active extruder
# Note that this only returns the "quality", not the "quality_changes" # Note that this only returns the "quality", not the "quality_changes"
@ -754,6 +775,8 @@ class MachineManager(QObject):
result = [] result = []
empty_quality_changes = self._empty_quality_changes_container empty_quality_changes = self._empty_quality_changes_container
global_container_stack = self._global_container_stack global_container_stack = self._global_container_stack
if not global_container_stack:
return []
global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom())
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
@ -769,8 +792,13 @@ class MachineManager(QObject):
if extruder_stacks: if extruder_stacks:
# Add an extra entry for the global stack. # Add an extra entry for the global stack.
result.append({"stack": global_container_stack, "quality": result[0]["quality"], global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True")
"quality_changes": empty_quality_changes})
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 return result
## Determine the quality and quality changes settings for the current machine for a quality changes name. ## 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 # For the global stack, find a quality which matches the quality_type in
# the quality changes profile and also satisfies any material constraints. # the quality changes profile and also satisfies any material constraints.
quality_type = global_quality_changes.getMetaDataEntry("quality_type") 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. # Find the values for each extruder.
extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks()
@ -814,9 +845,10 @@ class MachineManager(QObject):
result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes}) result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes})
if extruder_stacks: if extruder_stacks:
# Duplicate the quality from the 1st extruder into the global stack. If anyone global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material], global_quality = "True")
# then looks in the global stack, they should get a reasonable view. if not global_quality:
result.append({"stack": global_container_stack, "quality": result[0]["quality"], "quality_changes": global_quality_changes}) global_quality = self._empty_quality_container
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes})
else: else:
result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes}) 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().activeStackChanged.connect(self._update)
Application.getInstance().getMachineManager().activeMaterialChanged.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. ## Fetch the list of containers to display.
# #
# See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers().
@ -56,6 +71,8 @@ class ProfilesModel(InstanceContainersModel):
machine_manager = Application.getInstance().getMachineManager() machine_manager = Application.getInstance().getMachineManager()
unit = global_container_stack.getBottom().getProperty("layer_height", "unit") unit = global_container_stack.getBottom().getProperty("layer_height", "unit")
if not unit:
unit = ""
for item in super()._recomputeItems(): for item in super()._recomputeItems():
profile = container_registry.findContainers(id = item["id"]) profile = container_registry.findContainers(id = item["id"])
@ -80,7 +97,10 @@ class ProfilesModel(InstanceContainersModel):
quality = quality_result["quality"] quality = quality_result["quality"]
break break
else: #No global container stack in the results: 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"): if quality and quality.hasProperty("layer_height", "value"):
item["layer_height"] = str(quality.getProperty("layer_height", "value")) + unit item["layer_height"] = str(quality.getProperty("layer_height", "value")) + unit
yield item yield item

View File

@ -5,6 +5,7 @@ from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal
import UM.Settings import UM.Settings
from UM.Application import Application from UM.Application import Application
import cura.Settings 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" ## 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) result.append(key)
return result 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) @pyqtSlot(str)
def manualRemoveOverride(self, key): def manualRemoveOverride(self, key):
if key in self._settings_with_inheritance_warning: 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 new_active_stack != self._active_container_stack: # Check if changed
if self._active_container_stack: # Disconnect signal from old container (if any) if self._active_container_stack: # Disconnect signal from old container (if any)
self._active_container_stack.propertyChanged.disconnect(self._onPropertyChanged) 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 = new_active_stack
self._active_container_stack.propertyChanged.connect(self._onPropertyChanged) 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. self._update() # Ensure that the settings_with_inheritance_warning list is populated.
def _onPropertyChanged(self, key, property_name): def _onPropertyChanged(self, key, property_name):
@ -113,22 +136,23 @@ class SettingInheritanceManager(QObject):
return self._settings_with_inheritance_warning return self._settings_with_inheritance_warning
## Check if a setting has an inheritance function that is overwritten ## 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 has_setting_function = False
stack = self._active_container_stack if not stack:
stack = self._active_container_stack
containers = [] containers = []
## Check if the setting has a user state. If not, it is never overwritten. ## 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: if not has_user_state:
return False return False
## If a setting is not enabled, don't label it as overwritten (It's never visible anyway). ## 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 return False
## Also check if the top container is not a setting function (this happens if the inheritance is restored). ## 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 return False
## Mash all containers for all the stacks together. ## Mash all containers for all the stacks together.
@ -178,7 +202,9 @@ class SettingInheritanceManager(QObject):
self._onActiveExtruderChanged() self._onActiveExtruderChanged()
def _onContainersChanged(self, container): 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 @staticmethod
def createSettingInheritanceManager(engine=None, script_engine=None): def createSettingInheritanceManager(engine=None, script_engine=None):

View File

@ -61,6 +61,15 @@ class SettingOverrideDecorator(SceneNodeDecorator):
def getActiveExtruder(self): def getActiveExtruder(self):
return self._extruder_stack 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 def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function
if property_name == "value": # Only reslice if the value has changed. if property_name == "value": # Only reslice if the value has changed.
Application.getInstance().getBackend().forceSlice() Application.getInstance().getBackend().forceSlice()

View File

@ -8,6 +8,7 @@ from .CuraContainerRegistry import CuraContainerRegistry
from .ExtruderManager import ExtruderManager from .ExtruderManager import ExtruderManager
from .ExtrudersModel import ExtrudersModel from .ExtrudersModel import ExtrudersModel
from .MachineManager import MachineManager from .MachineManager import MachineManager
from .MachineNameValidator import MachineNameValidator
from .MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from .MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler
from .SettingOverrideDecorator import SettingOverrideDecorator from .SettingOverrideDecorator import SettingOverrideDecorator
from .QualitySettingsModel import QualitySettingsModel 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 import UM.Application
from UM.Job import Job from UM.Job import Job
from UM.Math.Quaternion import Quaternion
import math import os.path
import zipfile import zipfile
try: try:
@ -31,9 +30,12 @@ class ThreeMFReader(MeshReader):
"3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02", "3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02",
"cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10"
} }
self._base_name = ""
self._unit = None
def _createNodeFromObject(self, object, name = ""): def _createNodeFromObject(self, object, name = ""):
node = SceneNode() node = SceneNode()
node.setName(name)
mesh_builder = MeshBuilder() mesh_builder = MeshBuilder()
vertex_list = [] vertex_list = []
@ -42,8 +44,7 @@ class ThreeMFReader(MeshReader):
for component in components: for component in components:
id = component.get("objectid") id = component.get("objectid")
new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces) new_object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces)
new_node = self._createNodeFromObject(new_object, self._base_name + "_" + str(id))
new_node = self._createNodeFromObject(new_object)
node.addChild(new_node) node.addChild(new_node)
transform = component.get("transform") transform = component.get("transform")
if transform is not None: if transform is not None:
@ -54,10 +55,6 @@ class ThreeMFReader(MeshReader):
vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")]) vertex_list.append([vertex.get("x"), vertex.get("y"), vertex.get("z")])
Job.yieldThread() 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: if len(node.getChildren()) > 0:
group_decorator = GroupDecorator() group_decorator = GroupDecorator()
node.addDecorator(group_decorator) node.addDecorator(group_decorator)
@ -76,20 +73,10 @@ class ThreeMFReader(MeshReader):
Job.yieldThread() 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. # TODO: We currently do not check for normals and simply recalculate them.
mesh_builder.calculateNormals() mesh_builder.calculateNormals()
mesh_builder.setFileName(name) mesh_builder.setFileName(name)
mesh_data = mesh_builder.build().getTransformed(flip_matrix) mesh_data = mesh_builder.build()
if len(mesh_data.getVertices()): if len(mesh_data.getVertices()):
node.setMeshData(mesh_data) node.setMeshData(mesh_data)
@ -122,31 +109,71 @@ class ThreeMFReader(MeshReader):
temp_mat._data[1, 3] = splitted_transformation[10] temp_mat._data[1, 3] = splitted_transformation[10]
temp_mat._data[2, 3] = splitted_transformation[11] 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 return temp_mat
def read(self, file_name): def read(self, file_name):
result = SceneNode() result = SceneNode()
group_decorator = GroupDecorator()
result.addDecorator(group_decorator)
# The base object of 3mf is a zipped archive. # The base object of 3mf is a zipped archive.
archive = zipfile.ZipFile(file_name, "r") archive = zipfile.ZipFile(file_name, "r")
self._base_name = os.path.basename(file_name)
try: try:
self._root = ET.parse(archive.open("3D/3dmodel.model")) 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) build_items = self._root.findall("./3mf:build/3mf:item", self._namespaces)
for build_item in build_items: for build_item in build_items:
id = build_item.get("objectid") id = build_item.get("objectid")
object = self._root.find("./3mf:resources/3mf:object[@id='{0}']".format(id), self._namespaces) 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") transform = build_item.get("transform")
if transform is not None: if transform is not None:
build_item_node.setTransformation(self._createMatrixFromTransformationString(transform)) 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) result.addChild(build_item_node)
except Exception as e: except Exception as e:
@ -157,10 +184,35 @@ class ThreeMFReader(MeshReader):
except: except:
return None return None
global_container_stack = UM.Application.getInstance().getGlobalContainerStack()
if global_container_stack: result.setEnabled(False) # The result should not be moved in any way, so disable it.
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)
return result 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. The layer height of each profile is now shown in the profile selection menu.
*Bug fixes *Bug fixes
Upgrading from version 2.1 on OSX works again. Editing material settings has actual effect on the prints again
You can import g-code from related machines as profile. Upgrading from version 2.1 on OSX works again
Fixed inheritance taking from the wrong extruder. You can import g-code from related machines as profile
Moved z-hop and extruder selection settings to a better category. 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] [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 *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. 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.
*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.
*Improved Position Tool *Improved Position Tool
Place objects precisely where you want them by manually entering the values for the position. 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 *Improved Grouping
It's now possible to transform objects that are already grouped. 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. 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. Profile management is improved. You can now easily see and track changes made to your profiles.
*Improved Setting Visibility *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 *Improved time estimation
Time estimations are more accurate. Based on our test time estimations should be within 5% accuracy for Ultimaker printers. 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 *Slicing features
*Infill Types *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 *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 *Set Acceleration and Jerk by Feature
You can now set Jerk and Acceleration by feature-type (infill, walls, top/bottom, etc), for more precision. 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 *Skin and Wall Overlap
The Skin Overlap setting allows you to overlap the skin lines with the walls for better adhesion. 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. Set the travel speed of the initial layer(s) to reduce risk of extruder pulling the print from the bed.
*Support Interface *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 Deleting grouped objects
Duplicating groups Duplicating groups
Bridging Bridging
Drag and drop on the first run on Windows Drag and drop (first Windows run)
Unretraction speeds Unretraction speeds
Bottom layer in Spiralize mode Bottom layer in Spiralize mode
Overlap Compensation Overlap Compensation
Retractions on Raft Raft retractions
Retractions now occur after each object printed in one-at-a-time mode. Retractions now occur after each object printed in one-at-a-time mode
Rafts are no longer printed outside of build area. Rafts are no longer printed outside of build area
Spiralize no longer only spiralizes the first printed segment only. Spiralize no longer limited to the first printed segment only
Line distance is now the actual line distance. Line distance is now the actual line distance
Enabling raft doesnt influence at which height the model is sliced any more. Enabling raft doesnt influence at which height the model is sliced any more
Brim is now always printed just once. Brim is now always printed just once
Support roofs now only occur just below overhang. Support roofs now only occur just below overhang
*Minor changes *Minor changes
Messages are now displayed 30 seconds instead of 10, making it less likely that certain messages are missed. Message display time increased to 30 seconds
You are now notified if you try to save to a locked SD card. Notification if you try to save to a locked SD card
Engine log is now included in the application log. Engine log now included in the application log
Undo and Redo now work correctly with multiple operations. Undo and Redo now function with multiple operations
The last used folder is now remembered (instead of defaulting to home folder). The last used folder is now remembered rather than defaulting to home folder
Import X3D files. Import X3D files
Made it possible to add multiple Per Model Settings at once. 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. Bed Level and Checkup procedures for UMO+ can be performed without re-adding machine
Combing is applied in more cases and results in better paths. Combing applied in more cases and results in better paths
Infill thickness now supports Grid infill also for even multiples of the layer height. 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 no longer removed by unprintable thin parts of the model
Support is now generated on each layer its supposed to. Support generated on each appropriate layer
Support doesn't go outside overhang areas any more. Support no longer goes outside overhang areas
Support doesn't remove brim around the object any more. Support no longer removes brim around the object
Brim is now also generated under the support. Brim is now also generated under the support
Draft shield and Ooze shield get their own brim or raft. Draft and Ooze shield get their own brim or raft
Settings shared between skirt and brim now also activate when brim is selected. Settings shared between skirt and brim now also activate when brim is selected
Compensate overlapping wall parts now also works for inner walls. Compensate overlapping wall parts now also works for inner walls
You can now adjust the speed at which the bed is lowered each layer. Bed lowering speed can be adjusted for each layer
[2.1.3] [2.1.3]

View File

@ -230,7 +230,7 @@ class CuraEngineBackend(Backend):
if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible:
if Application.getInstance().getPlatformActivity: if Application.getInstance().getPlatformActivity:
self._error_message = Message(catalog.i18nc("@info:status", 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._error_message.show()
self.backendStateChange.emit(BackendState.Error) self.backendStateChange.emit(BackendState.Error)
else: else:

View File

@ -75,7 +75,7 @@ class StartSliceJob(Job):
return return
# Don't slice if there is a setting with an error value. # 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) self.setResult(StartJobResult.SettingError)
return return

View File

@ -47,7 +47,17 @@ class GCodeWriter(MeshWriter):
def __init__(self): def __init__(self):
super().__init__() 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: if mode != MeshWriter.OutputMode.TextMode:
Logger.log("e", "GCode Writer does not support non-text mode.") Logger.log("e", "GCode Writer does not support non-text mode.")
return False return False

View File

@ -66,8 +66,11 @@ class LegacyProfileReader(ProfileReader):
def read(self, file_name): def read(self, file_name):
if file_name.split(".")[-1] != "ini": if file_name.split(".")[-1] != "ini":
return None 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: if multi_extrusion:
Logger.log("e", "Unable to import legacy profile %s. Multi extrusion is not supported", file_name) 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") 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: if "translation" not in dict_of_doom:
Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?") Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?")
return None return None
current_printer_definition = Application.getInstance().getGlobalContainerStack().getBottom() current_printer_definition = global_container_stack.getBottom()
profile.setDefinition(current_printer_definition) 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. 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] 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.") Logger.log("i", "A legacy profile was imported but everything evaluates to the defaults, creating an empty profile.")
profile.setDirty(True) profile.setDirty(True)
profile.addMetaDataEntry("type", "quality_changes") profile.addMetaDataEntry("type", "quality_changes")
profile.addMetaDataEntry("quality", "normal") profile.addMetaDataEntry("quality_type", "normal")
return profile return profile

View File

@ -84,11 +84,20 @@ class PerObjectSettingsTool(Tool):
default_stack = ExtruderManager.getInstance().getExtruderStack(0) default_stack = ExtruderManager.getInstance().getExtruderStack(0)
if default_stack: if default_stack:
default_stack_id = default_stack.getId() 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() root_node = Application.getInstance().getController().getScene().getRoot()
for node in DepthFirstIterator(root_node): 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() 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 import os.path
from UM.Application import Application from UM.Application import Application
@ -17,7 +20,7 @@ class RemovableDriveOutputDevice(OutputDevice):
super().__init__(device_id) super().__init__(device_id)
self.setName(device_name) 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.setDescription(catalog.i18nc("@item:inlistbox", "Save to Removable Drive {0}").format(device_name))
self.setIconName("save_sd") self.setIconName("save_sd")
self.setPriority(1) self.setPriority(1)
@ -25,7 +28,16 @@ class RemovableDriveOutputDevice(OutputDevice):
self._writing = False self._writing = False
self._stream = None 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) filter_by_machine = True # This plugin is indended to be used by machine (regardless of what it was told to do)
if self._writing: if self._writing:
raise OutputDeviceError.DeviceBusyError() raise OutputDeviceError.DeviceBusyError()
@ -50,15 +62,7 @@ class RemovableDriveOutputDevice(OutputDevice):
extension = file_formats[0]["extension"] extension = file_formats[0]["extension"]
if file_name is None: if file_name is None:
for n in BreadthFirstIterator(node): file_name = self._automaticFileName(nodes)
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()
if extension: # Not empty string. if extension: # Not empty string.
extension = "." + extension extension = "." + extension
@ -67,8 +71,8 @@ class RemovableDriveOutputDevice(OutputDevice):
try: try:
Logger.log("d", "Writing to %s", file_name) Logger.log("d", "Writing to %s", file_name)
# Using buffering greatly reduces the write time for many lines of gcode # Using buffering greatly reduces the write time for many lines of gcode
self._stream = open(file_name, "wt", buffering = 1) self._stream = open(file_name, "wt", buffering = 1, encoding = "utf-8")
job = WriteMeshJob(writer, self._stream, node, MeshWriter.OutputMode.TextMode) job = WriteMeshJob(writer, self._stream, nodes, MeshWriter.OutputMode.TextMode)
job.setFileName(file_name) job.setFileName(file_name)
job.progress.connect(self._onProgress) job.progress.connect(self._onProgress)
job.finished.connect(self._onFinished) 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)) 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 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): def _onProgress(self, job, progress):
if hasattr(job, "_message"): if hasattr(job, "_message"):
job._message.setProgress(progress) 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. # Cura is released under the terms of the AGPLv3 or higher.
from .avr_isp import stk500v2, ispBase, intelHex from .avr_isp import stk500v2, ispBase, intelHex
@ -25,7 +25,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
def __init__(self, serial_port): def __init__(self, serial_port):
super().__init__(serial_port) super().__init__(serial_port)
self.setName(catalog.i18nc("@item:inmenu", "USB printing")) 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.setDescription(catalog.i18nc("@info:tooltip", "Print via USB"))
self.setIconName("print") self.setIconName("print")
self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB")) self.setConnectionText(catalog.i18nc("@info:status", "Connected via USB"))
@ -426,7 +426,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
self._error_state = error self._error_state = error
self.onError.emit() 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) Application.getInstance().showPrintMonitor.emit(True)
self.startPrint() 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") 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): if not os.path.exists(user_storage):
os.makedirs(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) user_profile.write(file_handle)
version_upgrade_manager.upgradeExtraFile(user_storage, urllib.parse.quote_plus(self._name), "user") 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_outline_color;
uniform vec4 u_error_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; varying vec2 v_uvs;
float kernel[9]; float kernel[9];
@ -51,7 +55,15 @@ fragment =
sum += color * (kernel[i] / u_outline_strength); 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] [defaults]

View File

@ -411,6 +411,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
else: else:
Logger.log("d", "Unsupported material setting %s", key) Logger.log("d", "Unsupported material setting %s", key)
self.addMetaDataEntry("compatible", global_compatibility)
self._dirty = False self._dirty = False
machines = data.iterfind("./um:settings/um:machine", self.__namespaces) 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.setName(self.getName())
new_material.setMetaData(copy.deepcopy(self.getMetaData())) new_material.setMetaData(copy.deepcopy(self.getMetaData()))
new_material.setDefinition(definition) 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(): for key, value in global_setting_values.items():
new_material.setProperty(key, "value", value, definition) 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.setMetaData(copy.deepcopy(self.getMetaData()))
new_hotend_material.setDefinition(definition) new_hotend_material.setDefinition(definition)
new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id) 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(): for key, value in global_setting_values.items():
new_hotend_material.setProperty(key, "value", value, definition) new_hotend_material.setProperty(key, "value", value, definition)
@ -506,14 +511,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_hotend_material._dirty = False new_hotend_material._dirty = False
UM.Settings.ContainerRegistry.getInstance().addContainer(new_hotend_material) 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): def _addSettingElement(self, builder, instance):
try: try:
key = UM.Dictionary.findKey(self.__material_property_setting_map, instance.definition.key) key = UM.Dictionary.findKey(self.__material_property_setting_map, instance.definition.key)

View File

@ -276,7 +276,9 @@
"label": "Disallowed areas", "label": "Disallowed areas",
"description": "A list of polygons with areas the print head is not allowed to enter.", "description": "A list of polygons with areas the print head is not allowed to enter.",
"type": "polygons", "type": "polygons",
"default_value": [], "default_value":
[
],
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
@ -390,7 +392,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"machine_max_feedrate_x": { "machine_max_feedrate_x":
{
"label": "Maximum Speed X", "label": "Maximum Speed X",
"description": "The maximum speed for the motor of the X-direction.", "description": "The maximum speed for the motor of the X-direction.",
"unit": "mm/s", "unit": "mm/s",
@ -400,7 +403,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_feedrate_y": { "machine_max_feedrate_y":
{
"label": "Maximum Speed Y", "label": "Maximum Speed Y",
"description": "The maximum speed for the motor of the Y-direction.", "description": "The maximum speed for the motor of the Y-direction.",
"unit": "mm/s", "unit": "mm/s",
@ -410,7 +414,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_feedrate_z": { "machine_max_feedrate_z":
{
"label": "Maximum Speed Z", "label": "Maximum Speed Z",
"description": "The maximum speed for the motor of the Z-direction.", "description": "The maximum speed for the motor of the Z-direction.",
"unit": "mm/s", "unit": "mm/s",
@ -420,7 +425,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_feedrate_e": { "machine_max_feedrate_e":
{
"label": "Maximum Feedrate", "label": "Maximum Feedrate",
"description": "The maximum speed of the filament.", "description": "The maximum speed of the filament.",
"unit": "mm/s", "unit": "mm/s",
@ -430,7 +436,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_acceleration_x": { "machine_max_acceleration_x":
{
"label": "Maximum Acceleration X", "label": "Maximum Acceleration X",
"description": "Maximum acceleration for the motor of the X-direction", "description": "Maximum acceleration for the motor of the X-direction",
"unit": "mm/s²", "unit": "mm/s²",
@ -440,7 +447,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_acceleration_y": { "machine_max_acceleration_y":
{
"label": "Maximum Acceleration Y", "label": "Maximum Acceleration Y",
"description": "Maximum acceleration for the motor of the Y-direction.", "description": "Maximum acceleration for the motor of the Y-direction.",
"unit": "mm/s²", "unit": "mm/s²",
@ -450,7 +458,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_acceleration_z": { "machine_max_acceleration_z":
{
"label": "Maximum Acceleration Z", "label": "Maximum Acceleration Z",
"description": "Maximum acceleration for the motor of the Z-direction.", "description": "Maximum acceleration for the motor of the Z-direction.",
"unit": "mm/s²", "unit": "mm/s²",
@ -460,7 +469,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_acceleration_e": { "machine_max_acceleration_e":
{
"label": "Maximum Filament Acceleration", "label": "Maximum Filament Acceleration",
"description": "Maximum acceleration for the motor of the filament.", "description": "Maximum acceleration for the motor of the filament.",
"unit": "mm/s²", "unit": "mm/s²",
@ -470,7 +480,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_acceleration": { "machine_acceleration":
{
"label": "Default Acceleration", "label": "Default Acceleration",
"description": "The default acceleration of print head movement.", "description": "The default acceleration of print head movement.",
"unit": "mm/s²", "unit": "mm/s²",
@ -480,7 +491,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_jerk_xy": { "machine_max_jerk_xy":
{
"label": "Default X-Y Jerk", "label": "Default X-Y Jerk",
"description": "Default jerk for movement in the horizontal plane.", "description": "Default jerk for movement in the horizontal plane.",
"unit": "mm/s", "unit": "mm/s",
@ -490,7 +502,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_jerk_z": { "machine_max_jerk_z":
{
"label": "Default Z Jerk", "label": "Default Z Jerk",
"description": "Default jerk for the motor of the Z-direction.", "description": "Default jerk for the motor of the Z-direction.",
"unit": "mm/s", "unit": "mm/s",
@ -500,7 +513,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_max_jerk_e": { "machine_max_jerk_e":
{
"label": "Default Filament Jerk", "label": "Default Filament Jerk",
"description": "Default jerk for the motor of the filament.", "description": "Default jerk for the motor of the filament.",
"unit": "mm/s", "unit": "mm/s",
@ -510,7 +524,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"machine_minimum_feedrate": { "machine_minimum_feedrate":
{
"label": "Minimum Feedrate", "label": "Minimum Feedrate",
"description": "The minimal movement speed of the print head.", "description": "The minimal movement speed of the print head.",
"unit": "mm/s", "unit": "mm/s",
@ -579,7 +594,7 @@
"minimum_value": "0.0001", "minimum_value": "0.0001",
"minimum_value_warning": "0.75 * machine_nozzle_size", "minimum_value_warning": "0.75 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size",
"value":"line_width", "value": "line_width",
"default_value": 0.4, "default_value": 0.4,
"type": "float", "type": "float",
"settable_per_mesh": true, "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", "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", "maximum_value_warning": "2 * machine_nozzle_size",
"default_value": 0.4, "default_value": 0.4,
"value":"wall_line_width", "value": "wall_line_width",
"type": "float", "type": "float",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -607,7 +622,7 @@
"minimum_value_warning": "0.5 * machine_nozzle_size", "minimum_value_warning": "0.5 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size",
"default_value": 0.4, "default_value": 0.4,
"value":"wall_line_width", "value": "wall_line_width",
"type": "float", "type": "float",
"settable_per_mesh": true "settable_per_mesh": true
} }
@ -874,7 +889,8 @@
"settable_per_mesh": true, "settable_per_mesh": true,
"children": "children":
{ {
"travel_compensate_overlapping_walls_0_enabled": { "travel_compensate_overlapping_walls_0_enabled":
{
"label": "Compensate Outer Wall Overlaps", "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.", "description": "Compensate the flow for parts of an outer wall being printed where there is already a wall in place.",
"type": "bool", "type": "bool",
@ -882,7 +898,8 @@
"value": "travel_compensate_overlapping_walls_enabled", "value": "travel_compensate_overlapping_walls_enabled",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"travel_compensate_overlapping_walls_x_enabled": { "travel_compensate_overlapping_walls_x_enabled":
{
"label": "Compensate Inner Wall Overlaps", "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.", "description": "Compensate the flow for parts of an inner wall being printed where there is already a wall in place.",
"type": "bool", "type": "bool",
@ -1010,7 +1027,8 @@
} }
} }
}, },
"skin_overlap": { "skin_overlap":
{
"label": "Skin Overlap Percentage", "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.", "description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.",
"unit": "%", "unit": "%",
@ -1021,8 +1039,10 @@
"value": "5 if top_bottom_pattern != 'concentric' else 0", "value": "5 if top_bottom_pattern != 'concentric' else 0",
"enabled": "top_bottom_pattern != 'concentric'", "enabled": "top_bottom_pattern != 'concentric'",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
"skin_overlap_mm": { {
"skin_overlap_mm":
{
"label": "Skin Overlap", "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.", "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", "unit": "mm",
@ -1033,9 +1053,9 @@
"value": "skin_line_width * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "value": "skin_line_width * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0",
"enabled": "top_bottom_pattern != 'concentric'", "enabled": "top_bottom_pattern != 'concentric'",
"settable_per_mesh": true "settable_per_mesh": true
} }
} }
}, },
"infill_wipe_dist": "infill_wipe_dist":
{ {
"label": "Infill Wipe Distance", "label": "Infill Wipe Distance",
@ -1143,7 +1163,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"material_extrusion_cool_down_speed": { "material_extrusion_cool_down_speed":
{
"label": "Extrusion Cool Down Speed Modifier", "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.", "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", "unit": "°C/s",
@ -1156,7 +1177,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"material_bed_temperature": { "material_bed_temperature":
{
"label": "Build Plate Temperature", "label": "Build Plate Temperature",
"description": "The temperature used for the heated build plate. Set at 0 to pre-heat the printer manually.", "description": "The temperature used for the heated build plate. Set at 0 to pre-heat the printer manually.",
"unit": "°C", "unit": "°C",
@ -1171,7 +1193,8 @@
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
}, },
"material_diameter": { "material_diameter":
{
"label": "Diameter", "label": "Diameter",
"description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.",
"unit": "mm", "unit": "mm",
@ -1183,7 +1206,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"material_flow": { "material_flow":
{
"label": "Flow", "label": "Flow",
"description": "Flow compensation: the amount of material extruded is multiplied by this value.", "description": "Flow compensation: the amount of material extruded is multiplied by this value.",
"unit": "%", "unit": "%",
@ -1194,7 +1218,8 @@
"maximum_value_warning": "150", "maximum_value_warning": "150",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"retraction_enable": { "retraction_enable":
{
"label": "Enable Retraction", "label": "Enable Retraction",
"description": "Retract the filament when the nozzle is moving over a non-printed area. ", "description": "Retract the filament when the nozzle is moving over a non-printed area. ",
"type": "bool", "type": "bool",
@ -1202,7 +1227,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_amount": { "retraction_amount":
{
"label": "Retraction Distance", "label": "Retraction Distance",
"description": "The length of material retracted during a retraction move.", "description": "The length of material retracted during a retraction move.",
"unit": "mm", "unit": "mm",
@ -1214,7 +1240,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_speed": { "retraction_speed":
{
"label": "Retraction Speed", "label": "Retraction Speed",
"description": "The speed at which the filament is retracted and primed during a retraction move.", "description": "The speed at which the filament is retracted and primed during a retraction move.",
"unit": "mm/s", "unit": "mm/s",
@ -1227,8 +1254,10 @@
"enabled": "retraction_enable", "enabled": "retraction_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"children": { "children":
"retraction_retract_speed": { {
"retraction_retract_speed":
{
"label": "Retraction Retract Speed", "label": "Retraction Retract Speed",
"description": "The speed at which the filament is retracted during a retraction move.", "description": "The speed at which the filament is retracted during a retraction move.",
"unit": "mm/s", "unit": "mm/s",
@ -1243,7 +1272,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_prime_speed": { "retraction_prime_speed":
{
"label": "Retraction Prime Speed", "label": "Retraction Prime Speed",
"description": "The speed at which the filament is primed during a retraction move.", "description": "The speed at which the filament is primed during a retraction move.",
"unit": "mm/s", "unit": "mm/s",
@ -1260,7 +1290,8 @@
} }
} }
}, },
"retraction_extra_prime_amount": { "retraction_extra_prime_amount":
{
"label": "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.", "description": "Some material can ooze away during a travel move, which can be compensated for here.",
"unit": "mm³", "unit": "mm³",
@ -1272,7 +1303,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_min_travel": { "retraction_min_travel":
{
"label": "Retraction Minimum 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.", "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", "unit": "mm",
@ -1285,7 +1317,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_count_max": { "retraction_count_max":
{
"label": "Maximum Retraction Count", "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.", "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, "default_value": 90,
@ -1296,7 +1329,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"retraction_extrusion_window": { "retraction_extrusion_window":
{
"label": "Minimum Extrusion Distance 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.", "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", "unit": "mm",
@ -1560,7 +1594,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"speed_layer_0": { "speed_layer_0":
{
"label": "Initial Layer Speed", "label": "Initial Layer Speed",
"description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate.", "description": "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate.",
"unit": "mm/s", "unit": "mm/s",
@ -1601,7 +1636,8 @@
} }
} }
}, },
"skirt_brim_speed": { "skirt_brim_speed":
{
"label": "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.", "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", "unit": "mm/s",
@ -1664,9 +1700,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"acceleration_enabled":
{
"acceleration_enabled": {
"label": "Enable Acceleration Control", "label": "Enable Acceleration Control",
"description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.", "description": "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality.",
"type": "bool", "type": "bool",
@ -1675,7 +1710,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
"acceleration_print": { "acceleration_print":
{
"label": "Print Acceleration", "label": "Print Acceleration",
"description": "The acceleration with which printing happens.", "description": "The acceleration with which printing happens.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1686,8 +1722,10 @@
"default_value": 3000, "default_value": 3000,
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
"acceleration_infill": { {
"acceleration_infill":
{
"label": "Infill Acceleration", "label": "Infill Acceleration",
"description": "The acceleration with which infill is printed.", "description": "The acceleration with which infill is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1700,7 +1738,8 @@
"enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0", "enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"acceleration_wall": { "acceleration_wall":
{
"label": "Wall Acceleration", "label": "Wall Acceleration",
"description": "The acceleration with which the walls are printed.", "description": "The acceleration with which the walls are printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1712,8 +1751,10 @@
"value": "acceleration_print", "value": "acceleration_print",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
"acceleration_wall_0": { {
"acceleration_wall_0":
{
"label": "Outer Wall Acceleration", "label": "Outer Wall Acceleration",
"description": "The acceleration with which the outermost walls are printed.", "description": "The acceleration with which the outermost walls are printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1726,7 +1767,8 @@
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"acceleration_wall_x": { "acceleration_wall_x":
{
"label": "Inner Wall Acceleration", "label": "Inner Wall Acceleration",
"description": "The acceleration with which all inner walls are printed.", "description": "The acceleration with which all inner walls are printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1741,7 +1783,8 @@
} }
} }
}, },
"acceleration_topbottom": { "acceleration_topbottom":
{
"label": "Top/Bottom Acceleration", "label": "Top/Bottom Acceleration",
"description": "The acceleration with which top/bottom layers are printed.", "description": "The acceleration with which top/bottom layers are printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1754,7 +1797,8 @@
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"acceleration_support": { "acceleration_support":
{
"label": "Support Acceleration", "label": "Support Acceleration",
"description": "The acceleration with which the support structure is printed.", "description": "The acceleration with which the support structure is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1768,8 +1812,10 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "support_extruder_nr", "limit_to_extruder": "support_extruder_nr",
"settable_per_extruder": true, "settable_per_extruder": true,
"children": { "children":
"acceleration_support_infill": { {
"acceleration_support_infill":
{
"label": "Support Infill Acceleration", "label": "Support Infill Acceleration",
"description": "The acceleration with which the infill of support is printed.", "description": "The acceleration with which the infill of support is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1784,7 +1830,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"acceleration_support_interface": { "acceleration_support_interface":
{
"label": "Support Interface Acceleration", "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.", "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²", "unit": "mm/s²",
@ -1801,7 +1848,8 @@
} }
} }
}, },
"acceleration_prime_tower": { "acceleration_prime_tower":
{
"label": "Prime Tower Acceleration", "label": "Prime Tower Acceleration",
"description": "The acceleration with which the prime tower is printed.", "description": "The acceleration with which the prime tower is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1816,7 +1864,8 @@
} }
} }
}, },
"acceleration_travel": { "acceleration_travel":
{
"label": "Travel Acceleration", "label": "Travel Acceleration",
"description": "The acceleration with which travel moves are made.", "description": "The acceleration with which travel moves are made.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1829,7 +1878,8 @@
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false "settable_per_mesh": false
}, },
"acceleration_layer_0": { "acceleration_layer_0":
{
"label": "Initial Layer Acceleration", "label": "Initial Layer Acceleration",
"description": "The acceleration for the initial layer.", "description": "The acceleration for the initial layer.",
"unit": "mm/s²", "unit": "mm/s²",
@ -1841,7 +1891,8 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('acceleration_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
{
"acceleration_print_layer_0": "acceleration_print_layer_0":
{ {
"label": "Initial Layer Print Acceleration", "label": "Initial Layer Print Acceleration",
@ -1873,7 +1924,8 @@
} }
} }
}, },
"acceleration_skirt_brim": { "acceleration_skirt_brim":
{
"label": "Skirt/Brim Acceleration", "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.", "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²", "unit": "mm/s²",
@ -1887,8 +1939,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"jerk_enabled":
"jerk_enabled": { {
"label": "Enable Jerk Control", "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.", "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", "type": "bool",
@ -1897,7 +1949,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
"jerk_print": { "jerk_print":
{
"label": "Print Jerk", "label": "Print Jerk",
"description": "The maximum instantaneous velocity change of the print head.", "description": "The maximum instantaneous velocity change of the print head.",
"unit": "mm/s", "unit": "mm/s",
@ -1908,8 +1961,10 @@
"default_value": 20, "default_value": 20,
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
"jerk_infill": { {
"jerk_infill":
{
"label": "Infill Jerk", "label": "Infill Jerk",
"description": "The maximum instantaneous velocity change with which infill is printed.", "description": "The maximum instantaneous velocity change with which infill is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1922,7 +1977,8 @@
"enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0", "enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"jerk_wall": { "jerk_wall":
{
"label": "Wall Jerk", "label": "Wall Jerk",
"description": "The maximum instantaneous velocity change with which the walls are printed.", "description": "The maximum instantaneous velocity change with which the walls are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1934,8 +1990,10 @@
"value": "jerk_print", "value": "jerk_print",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
"jerk_wall_0": { {
"jerk_wall_0":
{
"label": "Outer Wall Jerk", "label": "Outer Wall Jerk",
"description": "The maximum instantaneous velocity change with which the outermost walls are printed.", "description": "The maximum instantaneous velocity change with which the outermost walls are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1948,7 +2006,8 @@
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"jerk_wall_x": { "jerk_wall_x":
{
"label": "Inner Wall Jerk", "label": "Inner Wall Jerk",
"description": "The maximum instantaneous velocity change with which all inner walls are printed.", "description": "The maximum instantaneous velocity change with which all inner walls are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1963,7 +2022,8 @@
} }
} }
}, },
"jerk_topbottom": { "jerk_topbottom":
{
"label": "Top/Bottom Jerk", "label": "Top/Bottom Jerk",
"description": "The maximum instantaneous velocity change with which top/bottom layers are printed.", "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1976,7 +2036,8 @@
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"jerk_support": { "jerk_support":
{
"label": "Support Jerk", "label": "Support Jerk",
"description": "The maximum instantaneous velocity change with which the support structure is printed.", "description": "The maximum instantaneous velocity change with which the support structure is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -1990,8 +2051,10 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "support_extruder_nr", "limit_to_extruder": "support_extruder_nr",
"children": { "children":
"jerk_support_infill": { {
"jerk_support_infill":
{
"label": "Support Infill Jerk", "label": "Support Infill Jerk",
"description": "The maximum instantaneous velocity change with which the infill of support is printed.", "description": "The maximum instantaneous velocity change with which the infill of support is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -2006,7 +2069,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
"jerk_support_interface": { "jerk_support_interface":
{
"label": "Support Interface Jerk", "label": "Support Interface Jerk",
"description": "The maximum instantaneous velocity change with which the roofs and bottoms of support are printed.", "description": "The maximum instantaneous velocity change with which the roofs and bottoms of support are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -2023,7 +2087,8 @@
} }
} }
}, },
"jerk_prime_tower": { "jerk_prime_tower":
{
"label": "Prime Tower Jerk", "label": "Prime Tower Jerk",
"description": "The maximum instantaneous velocity change with which the prime tower is printed.", "description": "The maximum instantaneous velocity change with which the prime tower is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -2038,7 +2103,8 @@
} }
} }
}, },
"jerk_travel": { "jerk_travel":
{
"label": "Travel Jerk", "label": "Travel Jerk",
"description": "The maximum instantaneous velocity change with which travel moves are made.", "description": "The maximum instantaneous velocity change with which travel moves are made.",
"unit": "mm/s", "unit": "mm/s",
@ -2051,7 +2117,8 @@
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": false "settable_per_mesh": false
}, },
"jerk_layer_0": { "jerk_layer_0":
{
"label": "Initial Layer Jerk", "label": "Initial Layer Jerk",
"description": "The print maximum instantaneous velocity change for the initial layer.", "description": "The print maximum instantaneous velocity change for the initial layer.",
"unit": "mm/s", "unit": "mm/s",
@ -2063,7 +2130,8 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('jerk_enabled')",
"settable_per_mesh": true, "settable_per_mesh": true,
"children": { "children":
{
"jerk_print_layer_0": "jerk_print_layer_0":
{ {
"label": "Initial Layer Print Jerk", "label": "Initial Layer Print Jerk",
@ -2095,7 +2163,8 @@
} }
} }
}, },
"jerk_skirt_brim": { "jerk_skirt_brim":
{
"label": "Skirt/Brim Jerk", "label": "Skirt/Brim Jerk",
"description": "The maximum instantaneous velocity change with which the skirt and brim are printed.", "description": "The maximum instantaneous velocity change with which the skirt and brim are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -2306,7 +2375,7 @@
"cool_min_layer_time": "cool_min_layer_time":
{ {
"label": "Minimum 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", "unit": "s",
"type": "float", "type": "float",
"default_value": 5, "default_value": 5,
@ -2473,7 +2542,8 @@
"limit_to_extruder": "support_infill_extruder_nr", "limit_to_extruder": "support_infill_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"children": { "children":
{
"support_line_distance": "support_line_distance":
{ {
"label": "Support Line Distance", "label": "Support Line Distance",
@ -2548,11 +2618,13 @@
"enabled": "support_enable", "enabled": "support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_xy_overrides_z": { "support_xy_overrides_z":
{
"label": "Support Distance Priority", "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.", "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", "type": "enum",
"options": { "options":
{
"xy_overrides_z": "X/Y overrides Z", "xy_overrides_z": "X/Y overrides Z",
"z_overrides_xy": "Z overrides X/Y" "z_overrides_xy": "Z overrides X/Y"
}, },
@ -2561,7 +2633,8 @@
"enabled": "support_enable", "enabled": "support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_xy_distance_overhang": { "support_xy_distance_overhang":
{
"label": "Minimum Support X/Y Distance", "label": "Minimum Support X/Y Distance",
"description": "Distance of the support structure from the overhang in the X/Y directions. ", "description": "Distance of the support structure from the overhang in the X/Y directions. ",
"unit": "mm", "unit": "mm",
@ -2959,7 +3032,8 @@
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"layer_0_z_overlap": { "layer_0_z_overlap":
{
"label": "Initial Layer 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.", "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", "unit": "mm",
@ -3197,7 +3271,8 @@
} }
} }
}, },
"raft_acceleration": { "raft_acceleration":
{
"label": "Raft Print Acceleration", "label": "Raft Print Acceleration",
"description": "The acceleration with which the raft is printed.", "description": "The acceleration with which the raft is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -3210,8 +3285,10 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr", "limit_to_extruder": "adhesion_extruder_nr",
"children": { "children":
"raft_surface_acceleration": { {
"raft_surface_acceleration":
{
"label": "Raft Top Print Acceleration", "label": "Raft Top Print Acceleration",
"description": "The acceleration with which the top raft layers are printed.", "description": "The acceleration with which the top raft layers are printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -3225,7 +3302,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"raft_interface_acceleration": { "raft_interface_acceleration":
{
"label": "Raft Middle Print Acceleration", "label": "Raft Middle Print Acceleration",
"description": "The acceleration with which the middle raft layer is printed.", "description": "The acceleration with which the middle raft layer is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -3239,7 +3317,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"raft_base_acceleration": { "raft_base_acceleration":
{
"label": "Raft Base Print Acceleration", "label": "Raft Base Print Acceleration",
"description": "The acceleration with which the base raft layer is printed.", "description": "The acceleration with which the base raft layer is printed.",
"unit": "mm/s²", "unit": "mm/s²",
@ -3255,7 +3334,8 @@
} }
} }
}, },
"raft_jerk": { "raft_jerk":
{
"label": "Raft Print Jerk", "label": "Raft Print Jerk",
"description": "The jerk with which the raft is printed.", "description": "The jerk with which the raft is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -3268,8 +3348,10 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr", "limit_to_extruder": "adhesion_extruder_nr",
"children": { "children":
"raft_surface_jerk": { {
"raft_surface_jerk":
{
"label": "Raft Top Print Jerk", "label": "Raft Top Print Jerk",
"description": "The jerk with which the top raft layers are printed.", "description": "The jerk with which the top raft layers are printed.",
"unit": "mm/s", "unit": "mm/s",
@ -3283,7 +3365,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"raft_interface_jerk": { "raft_interface_jerk":
{
"label": "Raft Middle Print Jerk", "label": "Raft Middle Print Jerk",
"description": "The jerk with which the middle raft layer is printed.", "description": "The jerk with which the middle raft layer is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -3297,7 +3380,8 @@
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "adhesion_extruder_nr"
}, },
"raft_base_jerk": { "raft_base_jerk":
{
"label": "Raft Base Print Jerk", "label": "Raft Base Print Jerk",
"description": "The jerk with which the base raft layer is printed.", "description": "The jerk with which the base raft layer is printed.",
"unit": "mm/s", "unit": "mm/s",
@ -3313,7 +3397,8 @@
} }
} }
}, },
"raft_fan_speed": { "raft_fan_speed":
{
"label": "Raft Fan Speed", "label": "Raft Fan Speed",
"description": "The fan speed for the raft.", "description": "The fan speed for the raft.",
"unit": "%", "unit": "%",
@ -3558,6 +3643,17 @@
"type": "bool", "type": "bool",
"default_value": false, "default_value": false,
"settable_per_mesh": true "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_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
"conical_overhang_enabled": { "conical_overhang_enabled":
{
"label": "Make Overhang Printable", "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.", "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", "type": "bool",
"default_value": false "default_value": false
}, },
"conical_overhang_angle": { "conical_overhang_angle":
{
"label": "Maximum Model 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.", "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": "°", "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", "manufacturer": "PrintrBot",
"category": "Other", "category": "Other",
"platform": "printrbot_simple_metal_platform.stl", "platform": "printrbot_simple_metal_platform.stl",
"platform_offset": [0, -3.45, 0],
"file_formats": "text/x-gcode" "file_formats": "text/x-gcode"
}, },

View File

@ -21,7 +21,7 @@
"machine_name": { "default_value": "Ultimaker 2" }, "machine_name": { "default_value": "Ultimaker 2" },
"machine_start_gcode" : { "machine_start_gcode" : {
"default_value": "", "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" : { "machine_end_gcode" : {
"default_value": "", "default_value": "",

View File

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

View File

@ -38,8 +38,8 @@
"machine_depth": { "default_value": 215 }, "machine_depth": { "default_value": 215 },
"machine_height": { "default_value": 200 }, "machine_height": { "default_value": 200 },
"machine_heated_bed": { "default_value": true }, "machine_heated_bed": { "default_value": true },
"machine_nozzle_heat_up_speed": { "default_value": 0.8 }, "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
"machine_nozzle_cool_down_speed": { "default_value": 1 }, "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
"machine_head_with_fans_polygon": "machine_head_with_fans_polygon":
{ {
"default_value": "default_value":
@ -50,14 +50,12 @@
[ 60, -30 ] [ 60, -30 ]
] ]
}, },
"machine_center_is_zero": { "default_value": false },
"machine_gcode_flavor": { "default_value": "Griffin" }, "machine_gcode_flavor": { "default_value": "Griffin" },
"machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 },
"machine_max_feedrate_z": { "default_value": 40 }, "machine_max_feedrate_z": { "default_value": 40 },
"machine_acceleration": { "default_value": 3000 }, "machine_acceleration": { "default_value": 3000 },
"gantry_height": { "default_value": 60 }, "gantry_height": { "default_value": 60 },
"machine_use_extruder_offset_to_offset_coords": { "default_value": true },
"machine_disallowed_areas": { "default_value": [ "machine_disallowed_areas": { "default_value": [
[[-91.5, -115], [-115, -115], [-115, -104.6], [-91.5, -104.6]], [[-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]], [[-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]], [[100.5, -54.5], [100.5, 99.3], [115, 99.3], [115, -54.5]],
[[77, 99.3], [77, 115], [115, 115], [115, 99.3]] [[77, 99.3], [77, 115], [115, 115], [115, 99.3]]
]}, ]},
"machine_show_variants": { "default_value": true },
"machine_extruder_count": { "default_value": 2 }, "machine_extruder_count": { "default_value": 2 },
"print_sequence": {"enabled": false},
"extruder_prime_pos_abs": { "default_value": true }, "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_start_gcode": { "default_value": "" },
"machine_end_gcode": { "default_value": "" }, "machine_end_gcode": { "default_value": "" },
"prime_tower_position_x": { "default_value": 175 }, "prime_tower_position_x": { "default_value": 175 },
"prime_tower_position_y": { "default_value": 179 }, "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_texture": "Ultimaker3Extendedbackplate.png",
"platform_offset": [0, 0, 0], "platform_offset": [0, 0, 0],
"has_machine_quality": true, "has_machine_quality": true,
"has_machine_materials": true, "has_machine_materials": true,
"has_variant_materials": true, "has_variant_materials": true,
"has_materials": true, "has_materials": true,
"has_variants": 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 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Erweitert" msgstr "Benutzerdefiniert"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Advanced" msgstr "Custom"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Avanzado" msgstr "Personalizado"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Uranium json setting files\n" "Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n" "Language-Team: LANGUAGE\n"

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Uranium json setting files\n" "Project-Id-Version: Uranium json setting files\n"
"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE\n" "Language-Team: LANGUAGE\n"
@ -815,6 +815,20 @@ msgid ""
"outside of the model." "outside of the model."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "alternate_extra_perimeter label" msgctxt "alternate_extra_perimeter label"
msgid "Alternate Extra Wall" msgid "Alternate Extra Wall"
@ -1310,42 +1324,6 @@ msgid ""
"material is limited." "material is limited."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "material_standby_temperature label" msgctxt "material_standby_temperature label"
msgid "Standby Temperature" msgid "Standby Temperature"
@ -1405,19 +1383,6 @@ msgid ""
"retraction." "retraction."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "speed label" msgctxt "speed label"
msgid "Speed" msgid "Speed"
@ -2070,6 +2035,55 @@ msgid ""
"during travel moves." "during travel moves."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "cooling label" msgctxt "cooling label"
msgid "Cooling" msgid "Cooling"
@ -2176,7 +2190,9 @@ msgctxt "cool_min_layer_time description"
msgid "" msgid ""
"The minimum time spent in a layer. This forces the printer to slow down, to " "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 " "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 "" msgstr ""
#: fdmprinter.def.json #: fdmprinter.def.json
@ -2227,6 +2243,54 @@ msgid ""
"severe overhangs." "severe overhangs."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "support_type label" msgctxt "support_type label"
msgid "Support Placement" msgid "Support Placement"
@ -2687,6 +2751,18 @@ msgctxt "adhesion_type option raft"
msgid "Raft" msgid "Raft"
msgstr "" 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 #: fdmprinter.def.json
msgctxt "skirt_line_count label" msgctxt "skirt_line_count label"
msgid "Skirt Line Count" msgid "Skirt Line Count"
@ -3100,66 +3176,6 @@ msgctxt "dual description"
msgid "Settings used for printing with multiple extruders." msgid "Settings used for printing with multiple extruders."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "prime_tower_enable label" msgctxt "prime_tower_enable label"
msgid "Enable Prime Tower" msgid "Enable Prime Tower"
@ -3336,6 +3352,18 @@ msgid ""
"everything else fails to produce proper GCode." "everything else fails to produce proper GCode."
msgstr "" 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 #: fdmprinter.def.json
msgctxt "blackmagic label" msgctxt "blackmagic label"
msgid "Special Modes" msgid "Special Modes"

View File

@ -1836,8 +1836,8 @@ msgstr "Suositeltu"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Laajennettu" msgstr "Mukautettu"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Avancée" msgstr "Personnalisé"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103
msgctxt "@action:button" msgctxt "@action:button"
msgid "Eject" msgid "Eject"
msgstr "Espelli" msgstr "Rimuovi"
#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:103
#, python-brace-format #, python-brace-format
msgctxt "@action" msgctxt "@action"
msgid "Eject removable device {0}" 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 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:108
#, python-brace-format #, python-brace-format
@ -1836,8 +1836,8 @@ msgstr "Consigliata"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Avanzata" msgstr "Personalizzata"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248
msgctxt "@action:inmenu menubar:edit" msgctxt "@action:inmenu menubar:edit"
msgid "&Clear Build Plate" msgid "&Clear Build Plate"
msgstr "&Cancella piano di stampa" msgstr "&Cancellare piano di stampa"
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258
msgctxt "@action:inmenu menubar:file" msgctxt "@action:inmenu menubar:file"

View File

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

View File

@ -1836,8 +1836,8 @@ msgstr "Aanbevolen"
#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Geavanceerd" msgstr "Aangepast"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.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 #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:383
msgctxt "@title:tab" msgctxt "@title:tab"
msgid "Advanced" msgid "Custom"
msgstr "Gelişmiş" msgstr "Özel"
#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:18
#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:18

Binary file not shown.

View File

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

View File

@ -175,6 +175,14 @@ UM.Dialog
text: getMachineName() text: getMachineName()
implicitWidth: UM.Theme.getSize("standard_list_input").width implicitWidth: UM.Theme.getSize("standard_list_input").width
maximumLength: 40 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 anchors.bottom:parent.bottom
} }

View File

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

View File

@ -153,6 +153,7 @@ Menu
else 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; return result;
} }

View File

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

View File

@ -251,6 +251,8 @@ UM.ManagementPage
{ {
id: renameDialog; id: renameDialog;
object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; 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: onAccepted:
{ {
Cura.MachineManager.renameMachine(base.currentItem.id, newName.trim()); Cura.MachineManager.renameMachine(base.currentItem.id, newName.trim());

View File

@ -29,7 +29,8 @@ UM.ManagementPage
} }
else 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 return result
} }

View File

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

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V. // 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 2.1
import QtQuick.Controls 1.1 import QtQuick.Controls 1.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V. // 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 2.1
import QtQuick.Controls 1.1 import QtQuick.Controls 1.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V. // 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. // Different than the name suggests, it is not always read-only.
import QtQuick 2.1 import QtQuick 2.1

View File

@ -1,5 +1,5 @@
// Copyright (c) 2016 Ultimaker B.V. // 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 2.1
import QtQuick.Controls 1.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) // - The type of the value of any deeper container is an "object" (eg; is a function)
visible: 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; 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); when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0);
value: 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; return Cura.MachineManager.activeMachineId;
} }
if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0)

View File

@ -380,7 +380,7 @@ Rectangle
Component.onCompleted: Component.onCompleted:
{ {
modesListModel.append({ text: catalog.i18nc("@title:tab", "Recommended"), item: sidebarSimple }) 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 }); sidebarContents.push({ "item": modesListModel.get(base.currentModeIndex).item, "immediate": true });
} }

View File

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

View File

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

View File

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

View File

@ -10,116 +10,14 @@ material = generic_abs_ultimaker3_AA_0.4
weight = -2 weight = -2
[values] [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_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 240 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_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 skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60 speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45) 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 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

View File

@ -10,116 +10,14 @@ material = generic_abs_ultimaker3_AA_0.4
weight = -1 weight = -1
[values] [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 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_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 235 material_print_temperature = 235
material_standby_temperature = 100 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_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_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40) 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

View File

@ -10,116 +10,12 @@ material = generic_abs_ultimaker3_AA_0.4
weight = 1 weight = 1
[values] [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 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_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 225
material_standby_temperature = 100 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_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_print = 50
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 50) 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

View File

@ -10,116 +10,12 @@ material = generic_abs_ultimaker3_AA_0.4
weight = 0 weight = 0
[values] [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_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 80
material_print_temperature = 230 material_print_temperature = 230
material_standby_temperature = 100 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_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_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55) 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

@ -10,116 +10,13 @@ material = generic_cpe_ultimaker3_AA_0.4
weight = -2 weight = -2
[values] [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_print_temperature = 250
material_standby_temperature = 100 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_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 skin_overlap = 20
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60 speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall = =math.ceil(speed_print * 45 / 60)
speed_wall_0 = =math.ceil(speed_wall * 35 / 45) 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 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

View File

@ -10,116 +10,12 @@ material = generic_cpe_ultimaker3_AA_0.4
weight = -1 weight = -1
[values] [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 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_print_temperature = 245
material_standby_temperature = 100 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_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_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall = =math.ceil(speed_print * 40 / 60)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40) 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

View File

@ -10,116 +10,12 @@ material = generic_cpe_ultimaker3_AA_0.4
weight = 1 weight = 1
[values] [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 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_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 70
material_print_temperature = 235
material_standby_temperature = 100 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_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_print = 50
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 50) 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

View File

@ -10,116 +10,12 @@ material = generic_cpe_ultimaker3_AA_0.4
weight = 0 weight = 0
[values] [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_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5 machine_nozzle_heat_up_speed = 1.5
material_bed_temperature = 70
material_print_temperature = 240 material_print_temperature = 240
material_standby_temperature = 100 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_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_print = 55
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 55) 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

@ -10,118 +10,24 @@ material = generic_nylon_ultimaker3_AA_0.4
weight = -2 weight = -2
[values] [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 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_layer_time_fan_speed_max = 20
cool_min_speed = 10 cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.35, 2) infill_line_width = =round(line_width * 0.5 / 0.4, 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 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_print_temperature = 255
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40 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_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2) raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0 raft_jerk = =jerk_layer_0
raft_margin = 10 raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) 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 skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10 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_prime_speed = 30
switch_extruder_retraction_amount = 30 switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40 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 wall_line_width_x = =wall_line_width

View File

@ -10,116 +10,24 @@ material = generic_nylon_ultimaker3_AA_0.4
weight = -1 weight = -1
[values] [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 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_layer_time_fan_speed_max = 20
cool_min_speed = 10 cool_min_speed = 10
infill_line_width = =round(line_width * 0.5 / 0.35, 2) infill_line_width = =round(line_width * 0.5 / 0.4, 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 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_print_temperature = 250
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40 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_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2) raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0 raft_jerk = =jerk_layer_0
raft_margin = 10 raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) 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 skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10 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_prime_speed = 30
switch_extruder_retraction_amount = 30 switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40 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 wall_line_width_x = =wall_line_width

View File

@ -10,116 +10,23 @@ material = generic_nylon_ultimaker3_AA_0.4
weight = 1 weight = 1
[values] [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 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_layer_time_fan_speed_max = 20
cool_min_speed = 15 cool_min_speed = 15
infill_line_width = =round(line_width * 0.5 / 0.35, 2) infill_line_width = =round(line_width * 0.5 / 0.4, 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 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 material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40 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_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2) raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0 raft_jerk = =jerk_layer_0
raft_margin = 10 raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) 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 skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10 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_prime_speed = 30
switch_extruder_retraction_amount = 30 switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40 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 wall_line_width_x = =wall_line_width

View File

@ -10,116 +10,23 @@ material = generic_nylon_ultimaker3_AA_0.4
weight = 0 weight = 0
[values] [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 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_layer_time_fan_speed_max = 20
cool_min_speed = 12 cool_min_speed = 12
infill_line_width = =round(line_width * 0.5 / 0.35, 2) infill_line_width = =round(line_width * 0.5 / 0.4, 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 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 material_standby_temperature = 100
multiple_mesh_overlap = 0
ooze_shield_angle = 40 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_acceleration = =acceleration_layer_0
raft_airgap = =round(layer_height_0 * 0.85, 2) raft_airgap = =round(layer_height_0 * 0.85, 2)
raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0 raft_jerk = =jerk_layer_0
raft_margin = 10 raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) 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 skin_overlap = 50
speed_infill = =speed_print
speed_layer_0 = 10 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_prime_speed = 30
switch_extruder_retraction_amount = 30 switch_extruder_retraction_amount = 30
switch_extruder_retraction_speeds = 40 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 wall_line_width_x = =wall_line_width

View File

@ -10,116 +10,17 @@ material = generic_pla_ultimaker3_AA_0.4
weight = -2 weight = -2
[values] [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_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5 cool_fan_speed_max = =cool_fan_speed
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_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6 machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 205 material_print_temperature = 205
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False 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 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_topbottom = =math.ceil(speed_print * 35 / 70)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 50 / 70) speed_wall = =math.ceil(speed_print * 50 / 70)
speed_wall_0 = =math.ceil(speed_wall * 35 / 50) 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 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 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

@ -10,116 +10,16 @@ material = generic_pla_ultimaker3_AA_0.4
weight = -1 weight = -1
[values] [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_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5 cool_fan_speed_max = =cool_fan_speed
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_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6 machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 200
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False 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_print = 80
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_topbottom = =math.ceil(speed_print * 30 / 80)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 40 / 80) speed_wall = =math.ceil(speed_print * 40 / 80)
speed_wall_0 = =math.ceil(speed_wall * 30 / 40) 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 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 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

@ -10,116 +10,17 @@ material = generic_pla_ultimaker3_AA_0.4
weight = 1 weight = 1
[values] [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_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5 cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 10 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_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6 machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 195 material_print_temperature = 195
material_standby_temperature = 100 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 skin_overlap = 10
speed_infill = =speed_print
speed_layer_0 = 20
speed_prime_tower = =speed_topbottom
speed_print = 60 speed_print = 60
speed_support = =speed_wall_0
speed_support_interface = =speed_topbottom
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 250
speed_wall = =math.ceil(speed_print * 30 / 60) 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 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 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

@ -10,117 +10,14 @@ material = generic_pla_ultimaker3_AA_0.4
weight = 0 weight = 0
[values] [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_fan_full_at_height = =layer_height_0 + 2 * layer_height
cool_min_layer_time = 5 cool_fan_speed_max = =cool_fan_speed
cool_min_speed = 7 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_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6 machine_nozzle_heat_up_speed = 1.6
material_bed_temperature = 60
material_print_temperature = 200
material_standby_temperature = 100 material_standby_temperature = 100
multiple_mesh_overlap = 0
prime_tower_enable = False 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 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 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 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

@ -11,116 +11,3 @@ material = generic_pva_ultimaker3_AA_0.4
supported = false supported = false
[values] [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 supported = false
[values] [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 supported = false
[values] [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 supported = false
[values] [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 supported = false
[values] [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

@ -10,117 +10,7 @@ weight = -2
material = generic_pva_ultimaker3_BB_0.4 material = generic_pva_ultimaker3_BB_0.4
[values] [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_print_temperature = 225
material_standby_temperature = 100 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 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

View File

@ -10,116 +10,7 @@ quality_type = fast
material = generic_pva_ultimaker3_BB_0.4 material = generic_pva_ultimaker3_BB_0.4
[values] [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_print_temperature = 220
material_standby_temperature = 100 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 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

View File

@ -10,117 +10,6 @@ quality_type = high
material = generic_pva_ultimaker3_BB_0.4 material = generic_pva_ultimaker3_BB_0.4
[values] [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_infill_rate = 35
support_interface_enable = True material_standby_temperature = 100
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

View File

@ -10,117 +10,6 @@ quality_type = normal
material = generic_pva_ultimaker3_BB_0.4 material = generic_pva_ultimaker3_BB_0.4
[values] [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_infill_rate = 30
support_interface_enable = True material_standby_temperature = 100
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

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