mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
CURA-4525 solved merge conflict
This commit is contained in:
commit
8854a28d56
20 changed files with 519 additions and 44 deletions
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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():
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
55
resources/definitions/anycubic_i3_mega.def.json
Normal file
55
resources/definitions/anycubic_i3_mega.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
54
resources/definitions/tevo_blackwidow.def.json
Normal file
54
resources/definitions/tevo_blackwidow.def.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
BIN
resources/meshes/anycubic_i3_mega_platform.stl
Normal file
BIN
resources/meshes/anycubic_i3_mega_platform.stl
Normal file
Binary file not shown.
BIN
resources/meshes/tevo_blackwidow.stl
Normal file
BIN
resources/meshes/tevo_blackwidow.stl
Normal file
Binary file not shown.
|
@ -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
|
||||||
|
|
|
@ -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; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue