mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Solve merge conflict PrinterOutputDevice. CURA-1263
This commit is contained in:
commit
b88ed76b7c
52 changed files with 139 additions and 31 deletions
|
@ -632,7 +632,7 @@ class CuraApplication(QtApplication):
|
|||
if not scene_bounding_box:
|
||||
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.sceneBoundingBoxChanged.emit()
|
||||
|
||||
|
@ -734,6 +734,8 @@ class CuraApplication(QtApplication):
|
|||
continue # Node that doesnt have a mesh and is not a group.
|
||||
if node.getParent() and node.getParent().callDecoration("isGroup"):
|
||||
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)
|
||||
|
||||
## 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.
|
||||
if node.getParent() and node.getParent().callDecoration("isGroup"):
|
||||
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)
|
||||
|
||||
if nodes:
|
||||
|
@ -799,6 +803,8 @@ class CuraApplication(QtApplication):
|
|||
continue # Node that doesnt have a mesh and is not a group.
|
||||
if node.getParent() and node.getParent().callDecoration("isGroup"):
|
||||
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)
|
||||
|
||||
if nodes:
|
||||
|
|
|
@ -49,6 +49,8 @@ class PrinterOutputDevice(QObject, OutputDevice):
|
|||
self._printer_state = ""
|
||||
self._printer_type = "unknown"
|
||||
|
||||
self._camera_active = False
|
||||
|
||||
def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None):
|
||||
raise NotImplementedError("requestWrite needs to be implemented")
|
||||
|
||||
|
@ -136,6 +138,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
|
|||
|
||||
@pyqtSlot()
|
||||
def startCamera(self):
|
||||
self._camera_active = True
|
||||
self._startCamera()
|
||||
|
||||
def _startCamera(self):
|
||||
|
@ -143,6 +146,7 @@ class PrinterOutputDevice(QObject, OutputDevice):
|
|||
|
||||
@pyqtSlot()
|
||||
def stopCamera(self):
|
||||
self._camera_active = False
|
||||
self._stopCamera()
|
||||
|
||||
def _stopCamera(self):
|
||||
|
|
|
@ -297,6 +297,16 @@ class MachineManager(QObject):
|
|||
changed_validation_state = self._active_container_stack.getProperty(key, property_name)
|
||||
else:
|
||||
changed_validation_state = self._global_container_stack.getProperty(key, property_name)
|
||||
|
||||
if changed_validation_state 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):
|
||||
self._stacks_have_errors = True
|
||||
self.stacksValidationChanged.emit()
|
||||
|
@ -871,7 +881,7 @@ class MachineManager(QObject):
|
|||
def _askUserToKeepOrClearCurrentSettings(self):
|
||||
# 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
|
||||
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
|
||||
details_list = [setting.definition.label for setting in self._global_container_stack.getTop().findInstances(**{})]
|
||||
|
@ -886,13 +896,18 @@ class MachineManager(QObject):
|
|||
# Format to output string
|
||||
details = "\n ".join([details_text, ] + details_list)
|
||||
|
||||
Application.getInstance().messageBox(catalog.i18nc("@window:title", "Switched profiles"),
|
||||
catalog.i18nc("@label",
|
||||
"Do you want to transfer your changed settings to this profile?"),
|
||||
catalog.i18nc("@label",
|
||||
num_changed_settings = len(details_list)
|
||||
Application.getInstance().messageBox(
|
||||
catalog.i18nc("@window:title", "Switched profiles"),
|
||||
catalog.i18nc(
|
||||
"@label",
|
||||
"Do you want to transfer your %d changed setting(s)/override(s) to this profile?") % num_changed_settings,
|
||||
catalog.i18nc(
|
||||
"@label",
|
||||
"If you transfer your settings they will override settings in the profile."),
|
||||
details,
|
||||
buttons=QMessageBox.Yes + QMessageBox.No, icon=QMessageBox.Question,
|
||||
buttons=QMessageBox.Yes + QMessageBox.No,
|
||||
icon=QMessageBox.Question,
|
||||
callback=self._keepUserSettingsDialogCallback)
|
||||
|
||||
def _keepUserSettingsDialogCallback(self, button):
|
||||
|
|
|
@ -85,7 +85,7 @@ class SettingInheritanceManager(QObject):
|
|||
self._update() # Ensure that the settings_with_inheritance_warning list is populated.
|
||||
|
||||
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)
|
||||
if not definitions:
|
||||
return
|
||||
|
@ -167,7 +167,16 @@ class SettingInheritanceManager(QObject):
|
|||
continue
|
||||
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
|
||||
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:
|
||||
has_non_function_value = True
|
||||
continue
|
||||
|
|
|
@ -425,7 +425,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||
for entry in settings:
|
||||
key = entry.get("key")
|
||||
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
|
||||
elif key in self.__unmapped_settings:
|
||||
if key == "hardware compatible":
|
||||
|
@ -484,10 +484,10 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||
new_material.getMetaData()["compatible"] = machine_compatibility
|
||||
|
||||
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():
|
||||
new_material.setProperty(key, "value", value, definition)
|
||||
new_material.setProperty(key, "value", value)
|
||||
|
||||
new_material._dirty = False
|
||||
if not materials:
|
||||
|
@ -538,13 +538,13 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||
new_hotend_material.getMetaData()["compatible"] = hotend_compatibility
|
||||
|
||||
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():
|
||||
new_hotend_material.setProperty(key, "value", value, definition)
|
||||
new_hotend_material.setProperty(key, "value", value)
|
||||
|
||||
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
|
||||
if not materials: # It was not added yet, do so now.
|
||||
|
|
|
@ -1696,6 +1696,7 @@
|
|||
"unit": "mm/s",
|
||||
"type": "float",
|
||||
"default_value": 30,
|
||||
"value": "speed_print * 30 / 60",
|
||||
"minimum_value": "0.1",
|
||||
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
|
||||
"maximum_value_warning": "300",
|
||||
|
@ -3637,7 +3638,6 @@
|
|||
"unit": "mm",
|
||||
"enabled": "resolveOrValue('prime_tower_enable')",
|
||||
"default_value": 15,
|
||||
"value": "15 if resolveOrValue('prime_tower_enable') else 0",
|
||||
"resolve": "max(extruderValues('prime_tower_size'))",
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)",
|
||||
|
@ -3906,6 +3906,28 @@
|
|||
"settable_per_meshgroup": 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":
|
||||
{
|
||||
"label": "Surface Mode",
|
||||
|
|
|
@ -1913,7 +1913,7 @@ msgstr "&Beenden"
|
|||
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:97
|
||||
msgctxt "@action:inmenu"
|
||||
msgid "Configure Cura..."
|
||||
msgstr "Cura wird konfiguriert..."
|
||||
msgstr "Cura konfigurieren..."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:104
|
||||
msgctxt "@action:inmenu menubar:printer"
|
||||
|
|
|
@ -2629,3 +2629,8 @@ msgstr "De configuratie van de printer in Cura laden"
|
|||
msgctxt "@action:button"
|
||||
msgid "Activate Configuration"
|
||||
msgstr "Configuratie Activeren"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:25
|
||||
msgctxt "@title"
|
||||
msgid "Information"
|
||||
msgstr "Informatie"
|
||||
|
|
|
@ -123,7 +123,7 @@ Item
|
|||
{
|
||||
id: updateProfileAction;
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ Item
|
|||
{
|
||||
id: addProfileAction;
|
||||
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
|
||||
|
|
|
@ -162,7 +162,7 @@ UM.ManagementPage
|
|||
Button
|
||||
{
|
||||
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)
|
||||
onClicked: Cura.ContainerManager.updateQualityChanges()
|
||||
|
@ -187,7 +187,7 @@ UM.ManagementPage
|
|||
Label {
|
||||
id: defaultsMessage
|
||||
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
|
||||
width: parent.width
|
||||
}
|
||||
|
|
|
@ -209,14 +209,26 @@ Item {
|
|||
// But this will cause the binding to be re-evaluated when the enabled property changes.
|
||||
return false;
|
||||
}
|
||||
|
||||
// There are no settings with any warning.
|
||||
if(Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -227,7 +239,7 @@ Item {
|
|||
focus = true;
|
||||
|
||||
// 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++)
|
||||
{
|
||||
var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object";
|
||||
|
|
|
@ -329,7 +329,7 @@ Column
|
|||
}
|
||||
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)
|
||||
}
|
||||
onExited: base.hideTooltip()
|
||||
|
|
|
@ -15,5 +15,6 @@ wall_thickness = 0.88
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
cool_min_layer_time = 5
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,9 +15,9 @@ wall_thickness = 0.7
|
|||
top_bottom_thickness = 0.75
|
||||
infill_sparse_density = 18
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_wall = 50
|
||||
speed_topbottom = 30
|
||||
speed_travel = 150
|
||||
speed_layer_0 = 30
|
||||
cool_min_layer_time = 5
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 50
|
||||
speed_layer_0 = =round(speed_print * 30 / 50)
|
||||
speed_topbottom = 20
|
||||
cool_min_layer_time = 5
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.8
|
||||
infill_sparse_density = 20
|
||||
speed_print = 50
|
||||
speed_layer_0 = =round(speed_print * 30 / 50)
|
||||
speed_topbottom = 20
|
||||
cool_min_layer_time = 5
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.59
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 55
|
||||
speed_layer_0 = =round(speed_print * 30 / 55)
|
||||
speed_wall = 40
|
||||
speed_wall_0 = 25
|
||||
speed_topbottom = 20
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 2.1
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
speed_wall_0 = 25
|
||||
cool_min_layer_time = 5
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 0.88
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 20
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,10 +15,10 @@ wall_thickness = 0.7
|
|||
top_bottom_thickness = 0.75
|
||||
infill_sparse_density = 18
|
||||
speed_print = 55
|
||||
speed_layer_0 = =round(speed_print * 30 / 55)
|
||||
speed_wall = 40
|
||||
speed_topbottom = 30
|
||||
speed_travel = 150
|
||||
speed_layer_0 = 30
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 20
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
speed_wall = 30
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 20
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.8
|
||||
infill_sparse_density = 20
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
speed_wall = 30
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 20
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.59
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
speed_infill = 55
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 50
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 2.1
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 50
|
||||
cool_min_speed = 15
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 0.88
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
cool_min_layer_time = 2
|
||||
cool_fan_speed_min = 20
|
||||
cool_min_speed = 15
|
||||
|
|
|
@ -15,9 +15,9 @@ wall_thickness = 0.7
|
|||
top_bottom_thickness = 0.75
|
||||
infill_sparse_density = 18
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
speed_wall = 40
|
||||
speed_travel = 150
|
||||
speed_layer_0 = 30
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 80
|
||||
cool_min_speed = 10
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.72
|
||||
infill_sparse_density = 22
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
speed_wall = 30
|
||||
cool_min_layer_time = 2
|
||||
cool_fan_speed_min = 80
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.05
|
|||
top_bottom_thickness = 0.8
|
||||
infill_sparse_density = 20
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
speed_wall = 30
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 80
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 1.59
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
cool_min_layer_time = 5
|
||||
cool_fan_speed_min = 80
|
||||
cool_min_speed = 8
|
||||
|
|
|
@ -15,6 +15,7 @@ wall_thickness = 2.1
|
|||
top_bottom_thickness = 1.2
|
||||
infill_sparse_density = 20
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
cool_min_layer_time = 3
|
||||
cool_fan_speed_min = 80
|
||||
cool_min_speed = 8
|
||||
|
|
|
@ -20,7 +20,6 @@ raft_surface_thickness = 0.2
|
|||
raft_surface_line_width = 0.57
|
||||
raft_interface_line_spacing = 1.4
|
||||
raft_margin = 15
|
||||
speed_layer_0 = 30
|
||||
raft_airgap = 0.37
|
||||
infill_overlap = 5
|
||||
layer_height = 0.3
|
||||
|
@ -40,6 +39,7 @@ line_width = 0.57
|
|||
layer_0_z_overlap = 0.22
|
||||
raft_base_line_width = 1.2
|
||||
speed_print = 25
|
||||
speed_layer_0 = =round(speed_print * 30 / 50)
|
||||
support_line_distance = 2.85
|
||||
support_angle = 45
|
||||
cool_min_layer_time = 3
|
||||
|
|
|
@ -33,6 +33,7 @@ infill_sparse_density = 40
|
|||
layer_0_z_overlap = 0.22
|
||||
raft_base_line_width = 1.6
|
||||
speed_print = 25
|
||||
speed_layer_0 = =round(speed_print * 30 / 25)
|
||||
speed_wall_0 = 20
|
||||
support_angle = 45
|
||||
cool_min_layer_time = 3
|
||||
|
|
|
@ -33,6 +33,7 @@ infill_sparse_density = 40
|
|||
layer_0_z_overlap = 0.22
|
||||
raft_base_line_width = 1.6
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
speed_wall_0 = 20
|
||||
support_angle = 45
|
||||
cool_min_layer_time = 3
|
||||
|
|
|
@ -20,7 +20,6 @@ support_top_distance = 0.5
|
|||
raft_surface_thickness = 0.2
|
||||
wall_thickness = 2.4
|
||||
raft_margin = 15
|
||||
speed_layer_0 = 30
|
||||
raft_airgap = 0.44
|
||||
infill_overlap = 5
|
||||
layer_height = 0.2
|
||||
|
@ -41,6 +40,7 @@ infill_sparse_density = 40
|
|||
layer_0_z_overlap = 0.25
|
||||
raft_base_line_width = 1.6
|
||||
speed_print = 55
|
||||
speed_layer_0 = =round(speed_print * 30 / 55)
|
||||
support_angle = 45
|
||||
raft_interface_line_spacing = 1.8
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ infill_sparse_density = 25
|
|||
layer_0_z_overlap = 0.22
|
||||
cool_min_layer_time = 2
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
raft_base_line_spacing = 1
|
||||
raft_base_line_width = 0.5
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ infill_sparse_density = 25
|
|||
layer_0_z_overlap = 0.22
|
||||
cool_min_layer_time = 2
|
||||
speed_print = 30
|
||||
speed_layer_0 = =round(speed_print * 30 / 30)
|
||||
raft_base_line_spacing = 1
|
||||
raft_base_line_width = 0.5
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ infill_sparse_density = 30
|
|||
layer_0_z_overlap = 0.22
|
||||
cool_min_layer_time = 3
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
support_angle = 45
|
||||
raft_base_line_spacing = 1.6
|
||||
raft_base_line_width = 0.8
|
||||
|
|
|
@ -31,6 +31,7 @@ infill_sparse_density = 30
|
|||
layer_0_z_overlap = 0.22
|
||||
cool_min_layer_time = 3
|
||||
speed_print = 45
|
||||
speed_layer_0 = =round(speed_print * 30 / 45)
|
||||
support_angle = 45
|
||||
raft_base_line_spacing = 1.6
|
||||
raft_base_line_width = 0.8
|
||||
|
|
|
@ -32,6 +32,7 @@ infill_sparse_density = 40
|
|||
layer_0_z_overlap = 0.22
|
||||
raft_base_line_width = 1.6
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
support_angle = 45
|
||||
cool_min_layer_time = 3
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ infill_sparse_density = 40
|
|||
layer_0_z_overlap = 0.22
|
||||
raft_base_line_width = 1.6
|
||||
speed_print = 40
|
||||
speed_layer_0 = =round(speed_print * 30 / 40)
|
||||
support_angle = 45
|
||||
cool_min_layer_time = 3
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ material_print_temperature = 240
|
|||
prime_tower_size = 16
|
||||
skin_overlap = 20
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 60)
|
||||
speed_wall = =math.ceil(speed_print * 45 / 60)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
||||
|
|
|
@ -17,6 +17,7 @@ material_print_temperature = 235
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 16
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 60)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
|
|
|
@ -16,6 +16,7 @@ machine_nozzle_heat_up_speed = 1.5
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 16
|
||||
speed_print = 50
|
||||
speed_layer_0 = =round(speed_print * 30 / 50)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 50)
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ material_print_temperature = 230
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 16
|
||||
speed_print = 55
|
||||
speed_layer_0 = =round(speed_print * 30 / 55)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 55)
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ material_standby_temperature = 100
|
|||
prime_tower_size = 17
|
||||
skin_overlap = 20
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_topbottom = =math.ceil(speed_print * 35 / 60)
|
||||
speed_wall = =math.ceil(speed_print * 45 / 60)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 35 / 45)
|
||||
|
|
|
@ -15,6 +15,7 @@ material_print_temperature = 245
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 17
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 60)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
|
|
|
@ -16,6 +16,7 @@ machine_nozzle_heat_up_speed = 1.5
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 17
|
||||
speed_print = 50
|
||||
speed_layer_0 = =round(speed_print * 30 / 50)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 50)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 50)
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ material_print_temperature = 240
|
|||
material_standby_temperature = 100
|
||||
prime_tower_size = 17
|
||||
speed_print = 55
|
||||
speed_layer_0 = =round(speed_print * 30 / 55)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 55)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 55)
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ machine_nozzle_heat_up_speed = 1.6
|
|||
material_standby_temperature = 100
|
||||
prime_tower_enable = False
|
||||
speed_print = 80
|
||||
speed_layer_0 = =round(speed_print * 30 / 80)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 80)
|
||||
speed_wall = =math.ceil(speed_print * 40 / 80)
|
||||
speed_wall_0 = =math.ceil(speed_wall * 30 / 40)
|
||||
|
|
|
@ -19,6 +19,7 @@ material_print_temperature = 195
|
|||
material_standby_temperature = 100
|
||||
skin_overlap = 10
|
||||
speed_print = 60
|
||||
speed_layer_0 = =round(speed_print * 30 / 60)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 60)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 60)
|
||||
top_bottom_thickness = 1
|
||||
|
|
|
@ -28,6 +28,7 @@ retraction_min_travel = =line_width * 2
|
|||
retraction_prime_speed = =retraction_speed
|
||||
skin_overlap = 15
|
||||
speed_print = 70
|
||||
speed_layer_0 = =speed_print * 30 / 70
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 70)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 70)
|
||||
support_angle = 60
|
||||
|
|
|
@ -27,6 +27,7 @@ retraction_min_travel = 1.5
|
|||
retraction_prime_speed = 25
|
||||
skin_overlap = 15
|
||||
speed_print = 70
|
||||
speed_layer_0 = =round(speed_print * 30 / 70)
|
||||
speed_topbottom = =math.ceil(speed_print * 30 / 70)
|
||||
speed_wall = =math.ceil(speed_print * 30 / 70)
|
||||
support_angle = 60
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue