diff --git a/cura/Settings/NotSupportedProfileContainer.py b/cura/Settings/NotSupportedProfileContainer.py new file mode 100644 index 0000000000..156f13ba4a --- /dev/null +++ b/cura/Settings/NotSupportedProfileContainer.py @@ -0,0 +1,47 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Signal import signalemitter + +from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase + + +## A container for not supported profiles. +# +# +@signalemitter +class NotSupportedProfileContainer(InstanceContainer): + + def __init__(self, container_id: str, machine_id: str, material_id: str, *args, **kwargs): + super().__init__(container_id, *args, **kwargs) + + # self._id = str(container_id) # type: str + # self._name = "Not supported" # type: str + + self.setMetaData({ + "setting_version": 3, + "supported": False, + "type": "quality", + "weight": "0", + "material": material_id + }) + + # register this container + ContainerRegistry.getInstance().addContainer(self) + + # set printer definition + definition = ContainerRegistry.getInstance().findDefinitionContainers(id = machine_id) + self.setDefinition(definition[0]) + + +# register the container mime type +not_support_instance_mime = MimeType( + name = "application/x-cura-notsupportedinstancecontainer", + comment = "Cura Not Supported Instance Container", + suffixes = [] +) + +MimeTypeDatabase.addMimeType(not_support_instance_mime) +ContainerRegistry.addContainerTypeByName(NotSupportedProfileContainer, "not_supported_instance", not_support_instance_mime.name) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 59a2e8d78f..68d538c671 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -7,11 +7,11 @@ from PyQt5.QtCore import Qt from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel from cura.QualityManager import QualityManager from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.NotSupportedProfileContainer import NotSupportedProfileContainer ## QML Model for listing the current list of valid quality profiles. @@ -78,9 +78,9 @@ class ProfilesModel(InstanceContainersModel): if len(result) == 0: machine_id = global_container_stack.definition.getId() material_id = extruder_stacks[0].material.getId() - not_supported_container = self.generateNoSupportedInstanceContainer(machine_id, material_id) + container_id = machine_id + "_" + material_id + "_not_supported" + not_supported_container = NotSupportedProfileContainer(container_id, machine_id, material_id) result.append(not_supported_container) - # ContainerRegistry.getInstance().addContainer(not_supported_container) return result # The usable quality types are set @@ -98,32 +98,22 @@ class ProfilesModel(InstanceContainersModel): return result - def generateNoSupportedInstanceContainer(self, machine_id: str, material_id: str): - container = InstanceContainer("not_supported") - container.setName("Not Supported") - container.metaData["setting_version"] = 3 - container.metaData["supported"] = False - container.metaData["type"] = "quality" - container.metaData["weight"] = "0" - container.metaData["material"] = material_id - container.metaData["quality_type"] = "normal" - definition = ContainerRegistry.getInstance().findDefinitionContainers(id = machine_id) - container.setDefinition(definition) - return container - ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): - #Some globals that we can re-use. + + # Some globals that we can re-use. global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: return # Detecting if the machine has multiple extrusion multiple_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 + # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() + if multiple_extrusion: # Place the active extruder at the front of the list. # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list. @@ -181,7 +171,9 @@ class ProfilesModel(InstanceContainersModel): # Now all the containers are set for item in containers: - profile = container_registry.findContainers(id=item["id"]) + profile = container_registry.findContainers(id = item["id"]) + + # when the profile is not supported if not profile: self._setItemLayerHeight(item, "", "") item["available"] = False @@ -195,6 +187,7 @@ class ProfilesModel(InstanceContainersModel): # Easy case: This profile defines its own layer height. if profile.hasProperty("layer_height", "value"): self._setItemLayerHeight(item, profile.getProperty("layer_height", "value"), unit) + item["not_supported"] = False yield item continue @@ -213,16 +206,18 @@ class ProfilesModel(InstanceContainersModel): quality = None if quality and quality.hasProperty("layer_height", "value"): self._setItemLayerHeight(item, quality.getProperty("layer_height", "value"), unit) + item["not_supported"] = False yield item continue - #Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. + # Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. skip_until_container = global_container_stack.material if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): #No material in stack. skip_until_container = global_container_stack.variant if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): #No variant in stack. skip_until_container = global_container_stack.getBottom() self._setItemLayerHeight(item, global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId()), unit) # Fall through to the currently loaded material. + item["not_supported"] = False yield item def _setItemLayerHeight(self, item, value, unit): diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json new file mode 100644 index 0000000000..5fc4b46c98 --- /dev/null +++ b/resources/definitions/builder_premium_large.def.json @@ -0,0 +1,117 @@ +{ + "id": "builder_premium_large", + "version": 2, + "name": "Builder Premium Large", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "quality_definition": "builder_premium_small", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_large_rear", + "1": "builder_premium_large_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Large" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 600 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "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 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json new file mode 100644 index 0000000000..56dab8f863 --- /dev/null +++ b/resources/definitions/builder_premium_medium.def.json @@ -0,0 +1,117 @@ +{ + "id": "builder_premium_medium", + "version": 2, + "name": "Builder Premium Medium", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "quality_definition": "builder_premium_small", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_medium_rear", + "1": "builder_premium_medium_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Medium" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 400 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "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 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json new file mode 100644 index 0000000000..65103ce1af --- /dev/null +++ b/resources/definitions/builder_premium_small.def.json @@ -0,0 +1,116 @@ +{ + "id": "builder_premium_small", + "version": 2, + "name": "Builder Premium Small", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_small_rear", + "1": "builder_premium_small_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Small" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 200 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "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 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/extruders/builder_premium_large_front.def.json b/resources/extruders/builder_premium_large_front.def.json new file mode 100644 index 0000000000..159682dc1c --- /dev/null +++ b/resources/extruders/builder_premium_large_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_large_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_large", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_large_rear.def.json b/resources/extruders/builder_premium_large_rear.def.json new file mode 100644 index 0000000000..5e9cc062ae --- /dev/null +++ b/resources/extruders/builder_premium_large_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_large_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_large", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_medium_front.def.json b/resources/extruders/builder_premium_medium_front.def.json new file mode 100644 index 0000000000..9a330b4f4b --- /dev/null +++ b/resources/extruders/builder_premium_medium_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_medium_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_medium", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_medium_rear.def.json b/resources/extruders/builder_premium_medium_rear.def.json new file mode 100644 index 0000000000..49d4734306 --- /dev/null +++ b/resources/extruders/builder_premium_medium_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_medium_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_medium", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_small_front.def.json b/resources/extruders/builder_premium_small_front.def.json new file mode 100644 index 0000000000..2e6293d153 --- /dev/null +++ b/resources/extruders/builder_premium_small_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_small_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_small", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_small_rear.def.json b/resources/extruders/builder_premium_small_rear.def.json new file mode 100644 index 0000000000..d1606cdd79 --- /dev/null +++ b/resources/extruders/builder_premium_small_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_small_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_small", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/meshes/builder_premium_platform.stl b/resources/meshes/builder_premium_platform.stl new file mode 100644 index 0000000000..b315d4b6d4 Binary files /dev/null and b/resources/meshes/builder_premium_platform.stl differ diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..88b1a899e9 --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = generic_pla_175 +setting_version = 3 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 60 + diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..a61b4ee958 --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = generic_pla_175 +setting_version = 3 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 40 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..6b0648b4e4 --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = generic_pla_175 +setting_version = 3 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 50 \ No newline at end of file