Solve merge conflict PrinterOutputDevice. CURA-1263

This commit is contained in:
Jack Ha 2016-11-24 13:55:22 +01:00
commit b88ed76b7c
52 changed files with 139 additions and 31 deletions

View file

@ -632,7 +632,7 @@ class CuraApplication(QtApplication):
if not scene_bounding_box: if not scene_bounding_box:
scene_bounding_box = AxisAlignedBox.Null scene_bounding_box = AxisAlignedBox.Null
if repr(self._scene_bounding_box) != repr(scene_bounding_box): if repr(self._scene_bounding_box) != repr(scene_bounding_box) and scene_bounding_box.isValid():
self._scene_bounding_box = scene_bounding_box self._scene_bounding_box = scene_bounding_box
self.sceneBoundingBoxChanged.emit() self.sceneBoundingBoxChanged.emit()
@ -734,6 +734,8 @@ class CuraApplication(QtApplication):
continue # Node that doesnt have a mesh and is not a group. continue # Node that doesnt have a mesh and is not a group.
if node.getParent() and node.getParent().callDecoration("isGroup"): if node.getParent() and node.getParent().callDecoration("isGroup"):
continue # Grouped nodes don't need resetting as their parent (the group) is resetted) continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
if not node.isSelectable():
continue # i.e. node with layer data
Selection.add(node) Selection.add(node)
## Delete all nodes containing mesh data in the scene. ## Delete all nodes containing mesh data in the scene.
@ -773,6 +775,8 @@ class CuraApplication(QtApplication):
continue # Node that doesnt have a mesh and is not a group. continue # Node that doesnt have a mesh and is not a group.
if node.getParent() and node.getParent().callDecoration("isGroup"): if node.getParent() and node.getParent().callDecoration("isGroup"):
continue # Grouped nodes don't need resetting as their parent (the group) is resetted) continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
if not node.isSelectable():
continue # i.e. node with layer data
nodes.append(node) nodes.append(node)
if nodes: if nodes:
@ -799,6 +803,8 @@ class CuraApplication(QtApplication):
continue # Node that doesnt have a mesh and is not a group. continue # Node that doesnt have a mesh and is not a group.
if node.getParent() and node.getParent().callDecoration("isGroup"): if node.getParent() and node.getParent().callDecoration("isGroup"):
continue # Grouped nodes don't need resetting as their parent (the group) is resetted) continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
if not node.isSelectable():
continue # i.e. node with layer data
nodes.append(node) nodes.append(node)
if nodes: if nodes:

View file

@ -49,6 +49,8 @@ class PrinterOutputDevice(QObject, OutputDevice):
self._printer_state = "" self._printer_state = ""
self._printer_type = "unknown" self._printer_type = "unknown"
self._camera_active = False
def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None): def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None):
raise NotImplementedError("requestWrite needs to be implemented") raise NotImplementedError("requestWrite needs to be implemented")
@ -136,6 +138,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
@pyqtSlot() @pyqtSlot()
def startCamera(self): def startCamera(self):
self._camera_active = True
self._startCamera() self._startCamera()
def _startCamera(self): def _startCamera(self):
@ -143,6 +146,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
@pyqtSlot() @pyqtSlot()
def stopCamera(self): def stopCamera(self):
self._camera_active = False
self._stopCamera() self._stopCamera()
def _stopCamera(self): def _stopCamera(self):

View file

@ -297,6 +297,16 @@ class MachineManager(QObject):
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 is None:
# Setting is not validated. This can happen if there is only a setting definition.
# We do need to validate it, because a setting defintions value can be set by a function, which could
# be an invalid setting.
definition = self._active_container_stack.getSettingDefinition(key)
validator_type = UM.Settings.SettingDefinition.getValidatorForType(definition.type)
if validator_type:
validator = validator_type(key)
changed_validation_state = validator(self._active_container_stack)
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._stacks_have_errors = True self._stacks_have_errors = True
self.stacksValidationChanged.emit() self.stacksValidationChanged.emit()
@ -871,7 +881,7 @@ class MachineManager(QObject):
def _askUserToKeepOrClearCurrentSettings(self): def _askUserToKeepOrClearCurrentSettings(self):
# Ask the user if the user profile should be cleared or not (discarding the current settings) # Ask the user if the user profile should be cleared or not (discarding the current settings)
# In Simple Mode we assume the user always wants to keep the (limited) current settings # In Simple Mode we assume the user always wants to keep the (limited) current settings
details_text = catalog.i18nc("@label", "You made changes to the following setting(s):") details_text = catalog.i18nc("@label", "You made changes to the following setting(s)/override(s):")
# user changes in global stack # user changes in global stack
details_list = [setting.definition.label for setting in self._global_container_stack.getTop().findInstances(**{})] details_list = [setting.definition.label for setting in self._global_container_stack.getTop().findInstances(**{})]
@ -886,14 +896,19 @@ class MachineManager(QObject):
# Format to output string # Format to output string
details = "\n ".join([details_text, ] + details_list) details = "\n ".join([details_text, ] + details_list)
Application.getInstance().messageBox(catalog.i18nc("@window:title", "Switched profiles"), num_changed_settings = len(details_list)
catalog.i18nc("@label", Application.getInstance().messageBox(
"Do you want to transfer your changed settings to this profile?"), catalog.i18nc("@window:title", "Switched profiles"),
catalog.i18nc("@label", catalog.i18nc(
"If you transfer your settings they will override settings in the profile."), "@label",
details, "Do you want to transfer your %d changed setting(s)/override(s) to this profile?") % num_changed_settings,
buttons=QMessageBox.Yes + QMessageBox.No, icon=QMessageBox.Question, catalog.i18nc(
callback=self._keepUserSettingsDialogCallback) "@label",
"If you transfer your settings they will override settings in the profile."),
details,
buttons=QMessageBox.Yes + QMessageBox.No,
icon=QMessageBox.Question,
callback=self._keepUserSettingsDialogCallback)
def _keepUserSettingsDialogCallback(self, button): def _keepUserSettingsDialogCallback(self, button):
if button == QMessageBox.Yes: if button == QMessageBox.Yes:

View file

@ -85,7 +85,7 @@ class SettingInheritanceManager(QObject):
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):
if property_name == "value" and self._global_container_stack: if (property_name == "value" or property_name == "enabled") and self._global_container_stack:
definitions = self._global_container_stack.getBottom().findDefinitions(key = key) definitions = self._global_container_stack.getBottom().findDefinitions(key = key)
if not definitions: if not definitions:
return return
@ -167,7 +167,16 @@ class SettingInheritanceManager(QObject):
continue continue
if value is not None: if value is not None:
# If a setting doesn't use any keys, it won't change it's value, so treat it as if it's a fixed value # If a setting doesn't use any keys, it won't change it's value, so treat it as if it's a fixed value
has_setting_function = isinstance(value, UM.Settings.SettingFunction) and len(value.getUsedSettingKeys()) > 0 has_setting_function = isinstance(value, UM.Settings.SettingFunction)
if has_setting_function:
for setting_key in value.getUsedSettingKeys():
if setting_key in self._active_container_stack.getAllKeys():
break # We found an actual setting. So has_setting_function can remain true
else:
# All of the setting_keys turned out to not be setting keys at all!
# This can happen due enum keys also being marked as settings.
has_setting_function = False
if has_setting_function is False: if has_setting_function is False:
has_non_function_value = True has_non_function_value = True
continue continue

View file

@ -425,7 +425,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
for entry in settings: for entry in settings:
key = entry.get("key") key = entry.get("key")
if key in self.__material_property_setting_map: if key in self.__material_property_setting_map:
self.setProperty(self.__material_property_setting_map[key], "value", entry.text, self._definition) self.setProperty(self.__material_property_setting_map[key], "value", entry.text)
global_setting_values[self.__material_property_setting_map[key]] = entry.text global_setting_values[self.__material_property_setting_map[key]] = entry.text
elif key in self.__unmapped_settings: elif key in self.__unmapped_settings:
if key == "hardware compatible": if key == "hardware compatible":
@ -484,10 +484,10 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_material.getMetaData()["compatible"] = machine_compatibility 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)
for key, value in machine_setting_values.items(): for key, value in machine_setting_values.items():
new_material.setProperty(key, "value", value, definition) new_material.setProperty(key, "value", value)
new_material._dirty = False new_material._dirty = False
if not materials: if not materials:
@ -538,13 +538,13 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
new_hotend_material.getMetaData()["compatible"] = hotend_compatibility 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)
for key, value in machine_setting_values.items(): for key, value in machine_setting_values.items():
new_hotend_material.setProperty(key, "value", value, definition) new_hotend_material.setProperty(key, "value", value)
for key, value in hotend_setting_values.items(): for key, value in hotend_setting_values.items():
new_hotend_material.setProperty(key, "value", value, definition) new_hotend_material.setProperty(key, "value", value)
new_hotend_material._dirty = False new_hotend_material._dirty = False
if not materials: # It was not added yet, do so now. if not materials: # It was not added yet, do so now.

View file

@ -1696,6 +1696,7 @@
"unit": "mm/s", "unit": "mm/s",
"type": "float", "type": "float",
"default_value": 30, "default_value": 30,
"value": "speed_print * 30 / 60",
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "300", "maximum_value_warning": "300",
@ -3637,7 +3638,6 @@
"unit": "mm", "unit": "mm",
"enabled": "resolveOrValue('prime_tower_enable')", "enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 15, "default_value": 15,
"value": "15 if resolveOrValue('prime_tower_enable') else 0",
"resolve": "max(extruderValues('prime_tower_size'))", "resolve": "max(extruderValues('prime_tower_size'))",
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
@ -3906,6 +3906,28 @@
"settable_per_meshgroup": false, "settable_per_meshgroup": false,
"settable_globally": false "settable_globally": false
}, },
"support_mesh":
{
"label": "Support Mesh",
"description": "Use this mesh to specify support areas. This can be used to generate support structure.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true,
"settable_per_extruder": false,
"settable_per_meshgroup": false,
"settable_globally": false
},
"anti_overhang_mesh":
{
"label": "Anti Overhang Mesh",
"description": "Use this mesh to specify where no part of the model should be detected as overhang. This can be used to remove unwanted support structure.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true,
"settable_per_extruder": false,
"settable_per_meshgroup": false,
"settable_globally": false
},
"magic_mesh_surface_mode": "magic_mesh_surface_mode":
{ {
"label": "Surface Mode", "label": "Surface Mode",

View file

@ -1913,7 +1913,7 @@ msgstr "&Beenden"
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:97 #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:97
msgctxt "@action:inmenu" msgctxt "@action:inmenu"
msgid "Configure Cura..." msgid "Configure Cura..."
msgstr "Cura wird konfiguriert..." msgstr "Cura konfigurieren..."
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:104 #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:104
msgctxt "@action:inmenu menubar:printer" msgctxt "@action:inmenu menubar:printer"

View file

@ -2629,3 +2629,8 @@ msgstr "De configuratie van de printer in Cura laden"
msgctxt "@action:button" msgctxt "@action:button"
msgid "Activate Configuration" msgid "Activate Configuration"
msgstr "Configuratie Activeren" msgstr "Configuratie Activeren"
#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:25
msgctxt "@title"
msgid "Information"
msgstr "Informatie"

View file

@ -123,7 +123,7 @@ Item
{ {
id: updateProfileAction; id: updateProfileAction;
enabled: !Cura.MachineManager.stacksHaveErrors && 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/overrides");
onTriggered: Cura.ContainerManager.updateQualityChanges(); onTriggered: Cura.ContainerManager.updateQualityChanges();
} }
@ -143,7 +143,7 @@ Item
{ {
id: addProfileAction; id: addProfileAction;
enabled: !Cura.MachineManager.stacksHaveErrors && 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/overrides...");
} }
Action Action

View file

@ -162,7 +162,7 @@ UM.ManagementPage
Button Button
{ {
text: { text: {
return catalog.i18nc("@action:button", "Update profile with current settings"); return catalog.i18nc("@action:button", "Update profile with current settings/overrides");
} }
enabled: Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) enabled: Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
onClicked: Cura.ContainerManager.updateQualityChanges() onClicked: Cura.ContainerManager.updateQualityChanges()
@ -187,7 +187,7 @@ UM.ManagementPage
Label { Label {
id: defaultsMessage id: defaultsMessage
visible: false visible: false
text: catalog.i18nc("@action:label", "This profile uses the defaults specified by the printer, so it has no settings in the list below.") text: catalog.i18nc("@action:label", "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below.")
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
width: parent.width width: parent.width
} }

View file

@ -209,14 +209,26 @@ Item {
// But this will cause the binding to be re-evaluated when the enabled property changes. // But this will cause the binding to be re-evaluated when the enabled property changes.
return false; return false;
} }
// There are no settings with any warning.
if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0) if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0)
{ {
return false; return false;
} }
// This setting has a resolve value, so an inheritance warning doesn't do anything.
if(resolve != "None")
{
return false
}
// If the setting does not have a limit_to_extruder property (or is -1), use the active stack.
if(globalPropertyProvider.properties.limit_to_extruder == null || globalPropertyProvider.properties.limit_to_extruder == -1) if(globalPropertyProvider.properties.limit_to_extruder == null || globalPropertyProvider.properties.limit_to_extruder == -1)
{ {
return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0; return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0;
} }
// Setting does have a limit_to_extruder property, so use that one instead.
return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, globalPropertyProvider.properties.limit_to_extruder).indexOf(definition.key) >= 0; return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, globalPropertyProvider.properties.limit_to_extruder).indexOf(definition.key) >= 0;
} }
@ -227,7 +239,7 @@ Item {
focus = true; focus = true;
// Get the most shallow function value (eg not a number) that we can find. // Get the most shallow function value (eg not a number) that we can find.
var last_entry = propertyProvider.stackLevels[propertyProvider.stackLevels.length] var last_entry = propertyProvider.stackLevels[propertyProvider.stackLevels.length - 1]
for (var i = 1; i < base.stackLevels.length; i++) for (var i = 1; i < base.stackLevels.length; i++)
{ {
var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object"; var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object";

View file

@ -329,7 +329,7 @@ Column
} }
onEntered: onEntered:
{ {
var content = catalog.i18nc("@tooltip","Some setting values are different from the values stored in the profile.\n\nClick to open the profile manager.") var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.")
base.showTooltip(globalProfileRow, Qt.point(0, globalProfileRow.height / 2), content) base.showTooltip(globalProfileRow, Qt.point(0, globalProfileRow.height / 2), content)
} }
onExited: base.hideTooltip() onExited: base.hideTooltip()

View file

@ -15,5 +15,6 @@ wall_thickness = 0.88
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,9 +15,9 @@ wall_thickness = 0.7
top_bottom_thickness = 0.75 top_bottom_thickness = 0.75
infill_sparse_density = 18 infill_sparse_density = 18
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_wall = 50 speed_wall = 50
speed_topbottom = 30 speed_topbottom = 30
speed_travel = 150 speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 50 speed_print = 50
speed_layer_0 = =round(speed_print * 30 / 50)
speed_topbottom = 20 speed_topbottom = 20
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.8 top_bottom_thickness = 0.8
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 50 speed_print = 50
speed_layer_0 = =round(speed_print * 30 / 50)
speed_topbottom = 20 speed_topbottom = 20
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 1.59
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 55 speed_print = 55
speed_layer_0 = =round(speed_print * 30 / 55)
speed_wall = 40 speed_wall = 40
speed_wall_0 = 25 speed_wall_0 = 25
speed_topbottom = 20 speed_topbottom = 20

View file

@ -15,6 +15,7 @@ wall_thickness = 2.1
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
speed_wall_0 = 25 speed_wall_0 = 25
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 0.88
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 20 cool_fan_speed_min = 20
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,10 +15,10 @@ wall_thickness = 0.7
top_bottom_thickness = 0.75 top_bottom_thickness = 0.75
infill_sparse_density = 18 infill_sparse_density = 18
speed_print = 55 speed_print = 55
speed_layer_0 = =round(speed_print * 30 / 55)
speed_wall = 40 speed_wall = 40
speed_topbottom = 30 speed_topbottom = 30
speed_travel = 150 speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 20 cool_fan_speed_min = 20
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30 speed_wall = 30
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 20 cool_fan_speed_min = 20

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.8 top_bottom_thickness = 0.8
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30 speed_wall = 30
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 20 cool_fan_speed_min = 20

View file

@ -15,6 +15,7 @@ wall_thickness = 1.59
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
speed_infill = 55 speed_infill = 55
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 50 cool_fan_speed_min = 50

View file

@ -15,6 +15,7 @@ wall_thickness = 2.1
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 50 cool_fan_speed_min = 50
cool_min_speed = 15 cool_min_speed = 15

View file

@ -15,6 +15,7 @@ wall_thickness = 0.88
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
cool_min_layer_time = 2 cool_min_layer_time = 2
cool_fan_speed_min = 20 cool_fan_speed_min = 20
cool_min_speed = 15 cool_min_speed = 15

View file

@ -15,9 +15,9 @@ wall_thickness = 0.7
top_bottom_thickness = 0.75 top_bottom_thickness = 0.75
infill_sparse_density = 18 infill_sparse_density = 18
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 40 speed_wall = 40
speed_travel = 150 speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 80 cool_fan_speed_min = 80
cool_min_speed = 10 cool_min_speed = 10

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
infill_sparse_density = 22 infill_sparse_density = 22
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30 speed_wall = 30
cool_min_layer_time = 2 cool_min_layer_time = 2
cool_fan_speed_min = 80 cool_fan_speed_min = 80

View file

@ -15,6 +15,7 @@ wall_thickness = 1.05
top_bottom_thickness = 0.8 top_bottom_thickness = 0.8
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
speed_wall = 30 speed_wall = 30
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 80 cool_fan_speed_min = 80

View file

@ -15,6 +15,7 @@ wall_thickness = 1.59
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
cool_min_layer_time = 5 cool_min_layer_time = 5
cool_fan_speed_min = 80 cool_fan_speed_min = 80
cool_min_speed = 8 cool_min_speed = 8

View file

@ -15,6 +15,7 @@ wall_thickness = 2.1
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
infill_sparse_density = 20 infill_sparse_density = 20
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
cool_min_layer_time = 3 cool_min_layer_time = 3
cool_fan_speed_min = 80 cool_fan_speed_min = 80
cool_min_speed = 8 cool_min_speed = 8

View file

@ -20,7 +20,6 @@ raft_surface_thickness = 0.2
raft_surface_line_width = 0.57 raft_surface_line_width = 0.57
raft_interface_line_spacing = 1.4 raft_interface_line_spacing = 1.4
raft_margin = 15 raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.37 raft_airgap = 0.37
infill_overlap = 5 infill_overlap = 5
layer_height = 0.3 layer_height = 0.3
@ -40,6 +39,7 @@ line_width = 0.57
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
raft_base_line_width = 1.2 raft_base_line_width = 1.2
speed_print = 25 speed_print = 25
speed_layer_0 = =round(speed_print * 30 / 50)
support_line_distance = 2.85 support_line_distance = 2.85
support_angle = 45 support_angle = 45
cool_min_layer_time = 3 cool_min_layer_time = 3

View file

@ -33,6 +33,7 @@ infill_sparse_density = 40
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
raft_base_line_width = 1.6 raft_base_line_width = 1.6
speed_print = 25 speed_print = 25
speed_layer_0 = =round(speed_print * 30 / 25)
speed_wall_0 = 20 speed_wall_0 = 20
support_angle = 45 support_angle = 45
cool_min_layer_time = 3 cool_min_layer_time = 3

View file

@ -33,6 +33,7 @@ infill_sparse_density = 40
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
raft_base_line_width = 1.6 raft_base_line_width = 1.6
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
speed_wall_0 = 20 speed_wall_0 = 20
support_angle = 45 support_angle = 45
cool_min_layer_time = 3 cool_min_layer_time = 3

View file

@ -20,7 +20,6 @@ support_top_distance = 0.5
raft_surface_thickness = 0.2 raft_surface_thickness = 0.2
wall_thickness = 2.4 wall_thickness = 2.4
raft_margin = 15 raft_margin = 15
speed_layer_0 = 30
raft_airgap = 0.44 raft_airgap = 0.44
infill_overlap = 5 infill_overlap = 5
layer_height = 0.2 layer_height = 0.2
@ -41,6 +40,7 @@ infill_sparse_density = 40
layer_0_z_overlap = 0.25 layer_0_z_overlap = 0.25
raft_base_line_width = 1.6 raft_base_line_width = 1.6
speed_print = 55 speed_print = 55
speed_layer_0 = =round(speed_print * 30 / 55)
support_angle = 45 support_angle = 45
raft_interface_line_spacing = 1.8 raft_interface_line_spacing = 1.8

View file

@ -31,6 +31,7 @@ infill_sparse_density = 25
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
cool_min_layer_time = 2 cool_min_layer_time = 2
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
raft_base_line_spacing = 1 raft_base_line_spacing = 1
raft_base_line_width = 0.5 raft_base_line_width = 0.5

View file

@ -31,6 +31,7 @@ infill_sparse_density = 25
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
cool_min_layer_time = 2 cool_min_layer_time = 2
speed_print = 30 speed_print = 30
speed_layer_0 = =round(speed_print * 30 / 30)
raft_base_line_spacing = 1 raft_base_line_spacing = 1
raft_base_line_width = 0.5 raft_base_line_width = 0.5

View file

@ -31,6 +31,7 @@ infill_sparse_density = 30
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
cool_min_layer_time = 3 cool_min_layer_time = 3
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
support_angle = 45 support_angle = 45
raft_base_line_spacing = 1.6 raft_base_line_spacing = 1.6
raft_base_line_width = 0.8 raft_base_line_width = 0.8

View file

@ -31,6 +31,7 @@ infill_sparse_density = 30
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
cool_min_layer_time = 3 cool_min_layer_time = 3
speed_print = 45 speed_print = 45
speed_layer_0 = =round(speed_print * 30 / 45)
support_angle = 45 support_angle = 45
raft_base_line_spacing = 1.6 raft_base_line_spacing = 1.6
raft_base_line_width = 0.8 raft_base_line_width = 0.8

View file

@ -32,6 +32,7 @@ infill_sparse_density = 40
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
raft_base_line_width = 1.6 raft_base_line_width = 1.6
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
support_angle = 45 support_angle = 45
cool_min_layer_time = 3 cool_min_layer_time = 3

View file

@ -32,6 +32,7 @@ infill_sparse_density = 40
layer_0_z_overlap = 0.22 layer_0_z_overlap = 0.22
raft_base_line_width = 1.6 raft_base_line_width = 1.6
speed_print = 40 speed_print = 40
speed_layer_0 = =round(speed_print * 30 / 40)
support_angle = 45 support_angle = 45
cool_min_layer_time = 3 cool_min_layer_time = 3

View file

@ -16,6 +16,7 @@ material_print_temperature = 240
prime_tower_size = 16 prime_tower_size = 16
skin_overlap = 20 skin_overlap = 20
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60)
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)

View file

@ -17,6 +17,7 @@ material_print_temperature = 235
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 16 prime_tower_size = 16
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
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)

View file

@ -16,6 +16,7 @@ machine_nozzle_heat_up_speed = 1.5
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 16 prime_tower_size = 16
speed_print = 50 speed_print = 50
speed_layer_0 = =round(speed_print * 30 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50)

View file

@ -16,6 +16,7 @@ material_print_temperature = 230
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 16 prime_tower_size = 16
speed_print = 55 speed_print = 55
speed_layer_0 = =round(speed_print * 30 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55)

View file

@ -15,6 +15,7 @@ material_standby_temperature = 100
prime_tower_size = 17 prime_tower_size = 17
skin_overlap = 20 skin_overlap = 20
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60)
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)

View file

@ -15,6 +15,7 @@ material_print_temperature = 245
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 17 prime_tower_size = 17
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
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)

View file

@ -16,6 +16,7 @@ machine_nozzle_heat_up_speed = 1.5
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 17 prime_tower_size = 17
speed_print = 50 speed_print = 50
speed_layer_0 = =round(speed_print * 30 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50)
speed_wall = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50)

View file

@ -16,6 +16,7 @@ material_print_temperature = 240
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_size = 17 prime_tower_size = 17
speed_print = 55 speed_print = 55
speed_layer_0 = =round(speed_print * 30 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55)

View file

@ -17,6 +17,7 @@ machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100 material_standby_temperature = 100
prime_tower_enable = False prime_tower_enable = False
speed_print = 80 speed_print = 80
speed_layer_0 = =round(speed_print * 30 / 80)
speed_topbottom = =math.ceil(speed_print * 30 / 80) speed_topbottom = =math.ceil(speed_print * 30 / 80)
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)

View file

@ -19,6 +19,7 @@ material_print_temperature = 195
material_standby_temperature = 100 material_standby_temperature = 100
skin_overlap = 10 skin_overlap = 10
speed_print = 60 speed_print = 60
speed_layer_0 = =round(speed_print * 30 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_wall = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 30 / 60)
top_bottom_thickness = 1 top_bottom_thickness = 1

View file

@ -28,6 +28,7 @@ retraction_min_travel = =line_width * 2
retraction_prime_speed = =retraction_speed retraction_prime_speed = =retraction_speed
skin_overlap = 15 skin_overlap = 15
speed_print = 70 speed_print = 70
speed_layer_0 = =speed_print * 30 / 70
speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_wall = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70)
support_angle = 60 support_angle = 60

View file

@ -27,6 +27,7 @@ retraction_min_travel = 1.5
retraction_prime_speed = 25 retraction_prime_speed = 25
skin_overlap = 15 skin_overlap = 15
speed_print = 70 speed_print = 70
speed_layer_0 = =round(speed_print * 30 / 70)
speed_topbottom = =math.ceil(speed_print * 30 / 70) speed_topbottom = =math.ceil(speed_print * 30 / 70)
speed_wall = =math.ceil(speed_print * 30 / 70) speed_wall = =math.ceil(speed_print * 30 / 70)
support_angle = 60 support_angle = 60