CURA-4525 solved merge conflict

This commit is contained in:
Jack Ha 2018-01-04 10:24:30 +01:00
commit 8854a28d56
20 changed files with 519 additions and 44 deletions

View file

@ -13,6 +13,7 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.GroupedOperation import GroupedOperation
from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation
from UM.Operations.SetTransformOperation import SetTransformOperation from UM.Operations.SetTransformOperation import SetTransformOperation
from UM.Operations.TranslateOperation import TranslateOperation
from cura.Operations.SetParentOperation import SetParentOperation from cura.Operations.SetParentOperation import SetParentOperation
from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.MultiplyObjectsJob import MultiplyObjectsJob
@ -59,7 +60,11 @@ class CuraActions(QObject):
while current_node.getParent() and current_node.getParent().callDecoration("isGroup"): while current_node.getParent() and current_node.getParent().callDecoration("isGroup"):
current_node = current_node.getParent() current_node = current_node.getParent()
center_operation = SetTransformOperation(current_node, Vector()) # This was formerly done with SetTransformOperation but because of
# unpredictable matrix deconstruction it was possible that mirrors
# could manifest as rotations. Centering is therefore done by
# moving the node to negative whatever its position is:
center_operation = TranslateOperation(current_node, -current_node._position)
operation.addOperation(center_operation) operation.addOperation(center_operation)
operation.push() operation.push()

View file

@ -36,9 +36,32 @@ class StartJobResult(IntEnum):
## Formatter class that handles token expansion in start/end gcod ## Formatter class that handles token expansion in start/end gcod
class GcodeStartEndFormatter(Formatter): class GcodeStartEndFormatter(Formatter):
def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class] def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class]
# The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key),
# and a default_extruder_nr to use when no extruder_nr is specified
if isinstance(key, str): if isinstance(key, str):
try: try:
return kwargs[key] extruder_nr = kwargs["default_extruder_nr"]
except ValueError:
extruder_nr = -1
key_fragments = [fragment.strip() for fragment in key.split(',')]
if len(key_fragments) == 2:
try:
extruder_nr = int(key_fragments[1])
except ValueError:
try:
extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack
except (KeyError, ValueError):
# either the key does not exist, or the value is not an int
Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end gcode, using global stack", key_fragments[1], key_fragments[0])
elif len(key_fragments) != 1:
Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end gcode", key)
return "{" + str(key) + "}"
key = key_fragments[0]
try:
return kwargs[str(extruder_nr)][key]
except KeyError: except KeyError:
Logger.log("w", "Unable to replace '%s' placeholder in start/end gcode", key) Logger.log("w", "Unable to replace '%s' placeholder in start/end gcode", key)
return "{" + key + "}" return "{" + key + "}"
@ -57,6 +80,8 @@ class StartSliceJob(Job):
self._is_cancelled = False self._is_cancelled = False
self._build_plate_number = None self._build_plate_number = None
self._all_extruders_settings = None # cache for all setting values from all stacks (global & extruder) for the current machine
def getSliceMessage(self): def getSliceMessage(self):
return self._slice_message return self._slice_message
@ -242,16 +267,33 @@ class StartSliceJob(Job):
result["date"] = time.strftime("%d-%m-%Y") result["date"] = time.strftime("%d-%m-%Y")
result["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))] result["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))]
initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0]
initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value")
result["initial_extruder_nr"] = initial_extruder_nr
return result return result
## Replace setting tokens in a piece of g-code. ## Replace setting tokens in a piece of g-code.
# \param value A piece of g-code to replace tokens in. # \param value A piece of g-code to replace tokens in.
# \param settings A dictionary of tokens to replace and their respective # \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack
# replacement strings. def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1):
def _expandGcodeTokens(self, value: str, settings: dict): if not self._all_extruders_settings:
global_stack = Application.getInstance().getGlobalContainerStack()
# NB: keys must be strings for the string formatter
self._all_extruders_settings = {
"-1": self._buildReplacementTokens(global_stack)
}
for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()):
extruder_nr = extruder_stack.getProperty("extruder_nr", "value")
self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack)
try: try:
# any setting can be used as a token # any setting can be used as a token
fmt = GcodeStartEndFormatter() fmt = GcodeStartEndFormatter()
settings = self._all_extruders_settings.copy()
settings["default_extruder_nr"] = default_extruder_nr
return str(fmt.format(value, **settings)) return str(fmt.format(value, **settings))
except: except:
Logger.logException("w", "Unable to do token replacement on start/end gcode") Logger.logException("w", "Unable to do token replacement on start/end gcode")
@ -268,8 +310,9 @@ class StartSliceJob(Job):
settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "") settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "")
# Replace the setting tokens in start and end g-code. # Replace the setting tokens in start and end g-code.
settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], settings) extruder_nr = stack.getProperty("extruder_nr", "value")
settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], settings) settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], extruder_nr)
settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], extruder_nr)
for key, value in settings.items(): for key, value in settings.items():
# Do not send settings that are not settable_per_extruder. # Do not send settings that are not settable_per_extruder.
@ -294,13 +337,13 @@ class StartSliceJob(Job):
print_temperature_settings = {"material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"} print_temperature_settings = {"material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"}
settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings)) settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings))
# Find the correct temperatures from the first used extruder
extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0]
extruder_0_settings = self._buildReplacementTokens(extruder_stack)
# Replace the setting tokens in start and end g-code. # Replace the setting tokens in start and end g-code.
settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], extruder_0_settings) # Use values from the first used extruder by default so we get the expected temperatures
settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], extruder_0_settings) initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0]
initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value")
settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], initial_extruder_nr)
settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], initial_extruder_nr)
# Add all sub-messages for each individual setting. # Add all sub-messages for each individual setting.
for key, value in settings.items(): for key, value in settings.items():

View file

@ -27,7 +27,9 @@ class MachineSettingsAction(MachineAction):
self._qml_url = "MachineSettingsAction.qml" self._qml_url = "MachineSettingsAction.qml"
self._global_container_stack = None self._global_container_stack = None
self._container_index = 0
from cura.Settings.CuraContainerStack import _ContainerIndexes
self._container_index = _ContainerIndexes.DefinitionChanges
self._container_registry = ContainerRegistry.getInstance() self._container_registry = ContainerRegistry.getInstance()
self._container_registry.containerAdded.connect(self._onContainerAdded) self._container_registry.containerAdded.connect(self._onContainerAdded)
@ -241,6 +243,7 @@ class MachineSettingsAction(MachineAction):
"type": "material", "type": "material",
"approximate_diameter": machine_approximate_diameter, "approximate_diameter": machine_approximate_diameter,
"material": old_material.getMetaDataEntry("material", "value"), "material": old_material.getMetaDataEntry("material", "value"),
"brand": old_material.getMetaDataEntry("brand", "value"),
"supplier": old_material.getMetaDataEntry("supplier", "value"), "supplier": old_material.getMetaDataEntry("supplier", "value"),
"color_name": old_material.getMetaDataEntry("color_name", "value"), "color_name": old_material.getMetaDataEntry("color_name", "value"),
"definition": materials_definition "definition": materials_definition
@ -251,6 +254,7 @@ class MachineSettingsAction(MachineAction):
if old_material == self._empty_container: if old_material == self._empty_container:
search_criteria.pop("material", None) search_criteria.pop("material", None)
search_criteria.pop("supplier", None) search_criteria.pop("supplier", None)
search_criteria.pop("brand", None)
search_criteria.pop("definition", None) search_criteria.pop("definition", None)
search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material")
@ -258,6 +262,7 @@ class MachineSettingsAction(MachineAction):
if not materials: if not materials:
# Same material with new diameter is not found, search for generic version of the same material type # Same material with new diameter is not found, search for generic version of the same material type
search_criteria.pop("supplier", None) search_criteria.pop("supplier", None)
search_criteria.pop("brand", None)
search_criteria["color_name"] = "Generic" search_criteria["color_name"] = "Generic"
materials = self._container_registry.findInstanceContainers(**search_criteria) materials = self._container_registry.findInstanceContainers(**search_criteria)
if not materials: if not materials:
@ -274,6 +279,6 @@ class MachineSettingsAction(MachineAction):
# Just use empty material as a final fallback # Just use empty material as a final fallback
materials = [self._empty_container] materials = [self._empty_container]
Logger.log("i", "Selecting new material: %s" % materials[0].getId()) Logger.log("i", "Selecting new material: %s", materials[0].getId())
extruder_stack.material = materials[0] extruder_stack.material = materials[0]

View file

@ -393,7 +393,7 @@ Cura.MachineAction
property string label: catalog.i18nc("@label", "Material diameter") property string label: catalog.i18nc("@label", "Material diameter")
property string unit: catalog.i18nc("@label", "mm") property string unit: catalog.i18nc("@label", "mm")
property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.") property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.")
property var afterOnEditingFinished: function afterOnEditingFinished()
{ {
if (settingsTabs.currentIndex > 0) if (settingsTabs.currentIndex > 0)
{ {

View file

@ -0,0 +1,55 @@
{
"version":2,
"name":"Anycubic i3 Mega",
"inherits":"fdmprinter",
"metadata":{
"visible":true,
"author":"TheTobby",
"manufacturer":"Anycubic",
"file_formats":"text/x-gcode",
"icon":"icon_ultimaker2",
"platform":"anycubic_i3_mega_platform.stl",
"has_materials": false,
"has_machine_quality": true,
"preferred_quality": "*normal*"
},
"overrides":{
"machine_name":{
"default_value":"Anycubic i3 Mega"
},
"machine_heated_bed":{
"default_value":true
},
"machine_width":{
"default_value":210
},
"machine_height":{
"default_value":205
},
"machine_depth":{
"default_value":210
},
"machine_center_is_zero":{
"default_value":false
},
"machine_nozzle_size":{
"default_value":0.4
},
"material_diameter":{
"default_value":1.75
},
"gantry_height":{
"default_value":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\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{travel_speed} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\nM117 Printing...\nG5"
},
"machine_end_gcode":{
"default_value":"M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000"
}
}
}

View file

@ -0,0 +1,54 @@
{
"version": 2,
"name": "Tevo Black Widow",
"inherits": "fdmprinter",
"metadata": {
"visible": true,
"author": "TheTobby",
"manufacturer": "Tevo",
"file_formats": "text/x-gcode",
"icon": "icon_ultimaker2",
"has_materials": false,
"has_machine_quality": true,
"platform": "prusai3_platform.stl",
"preferred_quality": "*normal*"
},
"overrides": {
"machine_name": {
"default_value": "Tevo Black Widow"
},
"machine_heated_bed": {
"default_value": true
},
"machine_width": {
"default_value": 350
},
"machine_height": {
"default_value": 250
},
"machine_depth": {
"default_value": 250
},
"machine_center_is_zero": {
"default_value": false
},
"machine_nozzle_size": {
"default_value": 0.4
},
"material_diameter": {
"default_value": 1.75
},
"gantry_height": {
"default_value": 0
},
"machine_gcode_flavor": {
"default_value": "RepRap (Marlin/Sprinter)"
},
"machine_start_gcode": {
"default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\nM420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\nG28 ; home all\nG29 ; probe bed\nG92 E0 ;zero the extruded length\nG1 X0.0 Y50.0 Z10.0 F3600\n; perform wipe and prime\nG1 Z0.0 F1000\nG1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\nG1 Y100.0 E12.5 F1000.0 ; prime\nG92 E0 ; zero extruder again\nM117 Printing..."
},
"machine_end_gcode": {
"default_value": "G92 E0 ; zero the extruded length again\nG1 E-1.5 F500 ; retract the filament to release some of the pressure\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nG28 X0 ; home X axis\nG1 Y245 ; move Y axis to end position\nM84 ; disable motors\nM107 ; turn off fan"
}
}
}

View file

@ -66,7 +66,7 @@
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm 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": "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\nG1 Y200 F3600 ;move baseplate to front for easier access to printed object" "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\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off"
} }
} }
} }

Binary file not shown.

Binary file not shown.

View file

@ -17,7 +17,12 @@ Item
property alias undo: undoAction; property alias undo: undoAction;
property alias redo: redoAction; property alias redo: redoAction;
property alias homeCamera: homeCameraAction; property alias view3DCamera: view3DCameraAction;
property alias viewFrontCamera: viewFrontCameraAction;
property alias viewTopCamera: viewTopCameraAction;
property alias viewLeftSideCamera: viewLeftSideCameraAction;
property alias viewRightSideCamera: viewRightSideCameraAction;
property alias expandSidebar: expandSidebarAction; property alias expandSidebar: expandSidebarAction;
property alias deleteSelection: deleteSelectionAction; property alias deleteSelection: deleteSelectionAction;
@ -105,9 +110,37 @@ Item
Action Action
{ {
id: homeCameraAction; id: view3DCameraAction;
text: catalog.i18nc("@action:inmenu menubar:view","&Reset camera position"); text: catalog.i18nc("@action:inmenu menubar:view","&3D View");
onTriggered: CuraActions.homeCamera(); onTriggered: UM.Controller.rotateView("3d", 0);
}
Action
{
id: viewFrontCameraAction;
text: catalog.i18nc("@action:inmenu menubar:view","&Front View");
onTriggered: UM.Controller.rotateView("home", 0);
}
Action
{
id: viewTopCameraAction;
text: catalog.i18nc("@action:inmenu menubar:view","&Top View");
onTriggered: UM.Controller.rotateView("y", 90);
}
Action
{
id: viewLeftSideCameraAction;
text: catalog.i18nc("@action:inmenu menubar:view","&Left Side View");
onTriggered: UM.Controller.rotateView("x", 90);
}
Action
{
id: viewRightSideCameraAction;
text: catalog.i18nc("@action:inmenu menubar:view","&Right Side View");
onTriggered: UM.Controller.rotateView("x", -90);
} }
Action Action

View file

@ -31,11 +31,21 @@ Menu
ExclusiveGroup { id: group } ExclusiveGroup { id: group }
MenuSeparator {} MenuSeparator {}
MenuItem { action: Cura.Actions.homeCamera; }
Menu
{
title: catalog.i18nc("@action:inmenu menubar:view","&Camera position");
MenuItem { action: Cura.Actions.view3DCamera; }
MenuItem { action: Cura.Actions.viewFrontCamera; }
MenuItem { action: Cura.Actions.viewTopCamera; }
MenuItem { action: Cura.Actions.viewLeftSideCamera; }
MenuItem { action: Cura.Actions.viewRightSideCamera; }
}
MenuSeparator { MenuSeparator {
visible: UM.Preferences.getValue("cura/use_multi_build_plate") visible: UM.Preferences.getValue("cura/use_multi_build_plate")
} }
Instantiator Instantiator
{ {
model: Cura.BuildPlateModel model: Cura.BuildPlateModel
@ -53,5 +63,6 @@ Menu
ExclusiveGroup { id: buildPlateGroup; } ExclusiveGroup { id: buildPlateGroup; }
MenuSeparator {} MenuSeparator {}
MenuItem { action: Cura.Actions.expandSidebar; } MenuItem { action: Cura.Actions.expandSidebar; }
} }

View file

@ -372,7 +372,7 @@ Item
{ {
id: provider id: provider
containerStackId: Cura.ExtruderManager.activeExtruderStackId containerStackId: Cura.MachineManager.activeMachineId
key: model.key ? model.key : "" key: model.key ? model.key : ""
watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ]
storeIndex: 0 storeIndex: 0

View file

@ -97,7 +97,7 @@ Rectangle
SidebarHeader { SidebarHeader {
id: header id: header
width: parent.width width: parent.width
visible: machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants visible: (machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants) && !monitoringPrint
anchors.top: machineSelection.bottom anchors.top: machineSelection.bottom
onShowTooltip: base.showTooltip(item, location, text) onShowTooltip: base.showTooltip(item, location, text)

View file

@ -115,10 +115,8 @@ Rectangle
iconSource: UM.Theme.getIcon("view_3d") iconSource: UM.Theme.getIcon("view_3d")
style: UM.Theme.styles.small_tool_button style: UM.Theme.styles.small_tool_button
anchors.verticalCenter: viewOrientationControl.verticalCenter anchors.verticalCenter: viewOrientationControl.verticalCenter
onClicked:{ onClicked:UM.Controller.rotateView("3d", 0)
UM.Controller.rotateView("3d", 0); visible: base.width - allItemsWidth - 4 * this.width > 0
}
visible: base.width - allItemsWidth - 4 * this.width > 0;
} }
// #2 Front view // #2 Front view
@ -127,10 +125,8 @@ Rectangle
iconSource: UM.Theme.getIcon("view_front") iconSource: UM.Theme.getIcon("view_front")
style: UM.Theme.styles.small_tool_button style: UM.Theme.styles.small_tool_button
anchors.verticalCenter: viewOrientationControl.verticalCenter anchors.verticalCenter: viewOrientationControl.verticalCenter
onClicked:{ onClicked: UM.Controller.rotateView("home", 0);
UM.Controller.rotateView("home", 0); visible: base.width - allItemsWidth - 3 * this.width > 0
}
visible: base.width - allItemsWidth - 3 * this.width > 0;
} }
// #3 Top view // #3 Top view
@ -139,10 +135,8 @@ Rectangle
iconSource: UM.Theme.getIcon("view_top") iconSource: UM.Theme.getIcon("view_top")
style: UM.Theme.styles.small_tool_button style: UM.Theme.styles.small_tool_button
anchors.verticalCenter: viewOrientationControl.verticalCenter anchors.verticalCenter: viewOrientationControl.verticalCenter
onClicked:{ onClicked: UM.Controller.rotateView("y", 90)
UM.Controller.rotateView("y", 90); visible: base.width - allItemsWidth - 2 * this.width > 0
}
visible: base.width - allItemsWidth - 2 * this.width > 0;
} }
// #4 Left view // #4 Left view
@ -151,10 +145,8 @@ Rectangle
iconSource: UM.Theme.getIcon("view_left") iconSource: UM.Theme.getIcon("view_left")
style: UM.Theme.styles.small_tool_button style: UM.Theme.styles.small_tool_button
anchors.verticalCenter: viewOrientationControl.verticalCenter anchors.verticalCenter: viewOrientationControl.verticalCenter
onClicked:{ onClicked: UM.Controller.rotateView("x", 90)
UM.Controller.rotateView("x", 90); visible: base.width - allItemsWidth - 1 * this.width > 0
}
visible: base.width - allItemsWidth - 1 * this.width > 0;
} }
// #5 Left view // #5 Left view
@ -163,10 +155,8 @@ Rectangle
iconSource: UM.Theme.getIcon("view_right") iconSource: UM.Theme.getIcon("view_right")
style: UM.Theme.styles.small_tool_button style: UM.Theme.styles.small_tool_button
anchors.verticalCenter: viewOrientationControl.verticalCenter anchors.verticalCenter: viewOrientationControl.verticalCenter
onClicked:{ onClicked: UM.Controller.rotateView("x", -90)
UM.Controller.rotateView("x", -90); visible: base.width - allItemsWidth > 0
}
visible: base.width - allItemsWidth > 0;
} }
} }

View file

@ -0,0 +1,60 @@
[general]
version = 2
name = Draft
definition = anycubic_i3_mega
[metadata]
type = quality
quality_type = draft
weight = 0
setting_version = 4
[values]
acceleration_enabled = True
acceleration_print = 2000
acceleration_travel = 3500
adhesion_type = skirt
brim_width = 4.0
cool_fan_full_at_height = 0.5
cool_fan_speed = 100
cool_fan_speed_0 = 100
infill_overlap = 15
infill_pattern = zigzag
infill_sparse_density = 25
initial_layer_line_width_factor = 140
jerk_enabled = True
jerk_print = 13
jerk_travel = 13
layer_height = 0.4
layer_height_0 = 0.4
material_bed_temperature = 60
material_diameter = 1.75
material_print_temperature = 200
material_print_temperature_layer_0 = 0
retract_at_layer_change = False
retraction_amount = 7
retraction_hop = 0.075
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 1.5
retraction_speed = 40
skirt_brim_speed = 40
skirt_gap = 5
skirt_line_count = 3
speed_infill = 60
speed_print = 60
speed_support = 60
speed_topbottom = 30
speed_travel = 100
speed_wall = 60
speed_wall_x = 60
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2

View file

@ -0,0 +1,60 @@
[general]
version = 2
name = High
definition = anycubic_i3_mega
[metadata]
type = quality
quality_type = high
weight = 2
setting_version = 4
[values]
acceleration_enabled = True
acceleration_print = 2000
acceleration_travel = 3500
adhesion_type = skirt
brim_width = 4.0
cool_fan_full_at_height = 0.5
cool_fan_speed = 100
cool_fan_speed_0 = 100
infill_overlap = 15
infill_pattern = zigzag
infill_sparse_density = 25
initial_layer_line_width_factor = 140
jerk_enabled = True
jerk_print = 13
jerk_travel = 13
layer_height = 0.1
layer_height_0 = 0.1
material_bed_temperature = 60
material_diameter = 1.75
material_print_temperature = 200
material_print_temperature_layer_0 = 0
retract_at_layer_change = False
retraction_amount = 7
retraction_hop = 0.075
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 1.5
retraction_speed = 40
skirt_brim_speed = 40
skirt_gap = 5
skirt_line_count = 3
speed_infill = 50
speed_print = 50
speed_support = 30
speed_topbottom = 20
speed_travel = 50
speed_wall = 50
speed_wall_x = 50
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2

View file

@ -0,0 +1,60 @@
[general]
version = 2
name = Normal
definition = anycubic_i3_mega
[metadata]
type = quality
quality_type = normal
weight = 1
setting_version = 4
[values]
acceleration_enabled = True
acceleration_print = 2000
acceleration_travel = 3500
adhesion_type = skirt
brim_width = 4.0
cool_fan_full_at_height = 0.5
cool_fan_speed = 100
cool_fan_speed_0 = 100
infill_overlap = 15
infill_pattern = zigzag
infill_sparse_density = 25
initial_layer_line_width_factor = 140
jerk_enabled = True
jerk_print = 13
jerk_travel = 13
layer_height = 0.2
layer_height_0 = 0.2
material_bed_temperature = 60
material_diameter = 1.75
material_print_temperature = 200
material_print_temperature_layer_0 = 0
retract_at_layer_change = False
retraction_amount = 7
retraction_hop = 0.075
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 1.5
retraction_speed = 40
skirt_brim_speed = 40
skirt_gap = 5
skirt_line_count = 3
speed_infill = 50
speed_print = 50
speed_support = 30
speed_topbottom = 20
speed_travel = 100
speed_wall = 50
speed_wall_x = 50
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2

View file

@ -0,0 +1,33 @@
[general]
version = 2
name = Draft
definition = tevo_blackwidow
[metadata]
type = quality
quality_type = draft
weight = -2
setting_version = 4
[values]
brim_width = 4.0
infill_pattern = zigzag
layer_height = 0.4
material_diameter = 1.75
speed_infill = 50
speed_print = 50
speed_support = 30
speed_topbottom = 20
speed_travel = 100
speed_wall = 50
speed_wall_x = 50
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2

View file

@ -0,0 +1,33 @@
[general]
version = 2
name = High
definition = tevo_blackwidow
[metadata]
type = quality
quality_type = high
weight = 1
setting_version = 4
[values]
brim_width = 4.0
infill_pattern = zigzag
layer_height = 0.1
material_diameter = 1.75
speed_infill = 50
speed_print = 50
speed_support = 30
speed_topbottom = 15
speed_travel = 100
speed_wall = 50
speed_wall_x = 50
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2

View file

@ -0,0 +1,33 @@
[general]
version = 2
name = Normal
definition = tevo_blackwidow
[metadata]
type = quality
quality_type = normal
weight = 0
setting_version = 4
[values]
brim_width = 4.0
infill_pattern = zigzag
layer_height = 0.2
material_diameter = 1.75
speed_infill = 60
speed_print = 50
speed_support = 30
speed_topbottom = 20
speed_travel = 100
speed_wall = 50
speed_wall_x = 50
support_angle = 60
support_enable = True
support_interface_enable = True
support_pattern = triangles
support_roof_enable = True
support_type = everywhere
support_use_towers = False
support_xy_distance = 0.7
top_bottom_thickness = 1.2
wall_thickness = 1.2