diff --git a/.github/workflows/requirements-conan-package.txt b/.github/workflows/requirements-conan-package.txt index fcc1379cfa..bd19974dd9 100644 --- a/.github/workflows/requirements-conan-package.txt +++ b/.github/workflows/requirements-conan-package.txt @@ -1,2 +1,2 @@ -conan!=1.51.0,!=1.51.1,!=1.51.2,!=1.51.3 +conan!=1.51.0,!=1.51.1,!=1.51.2,!=1.51.3,!=1.52.0 sip diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 813b3f7d2e..c1aeb26151 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -288,7 +288,7 @@ class CuraStackBuilder: if definitions: name = definitions[0].getName() - stack = cls.createMachine(abstract_machine_id, definition_id) + stack = cls.createMachine(abstract_machine_id, definition_id, show_warning_message=False) if not stack: return None diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index d091ab9f6f..ca45cdc4b9 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -904,7 +904,7 @@ class MachineManager(QObject): if self._global_container_stack is None \ or self._global_container_stack.getProperty(setting_key, "value") == new_value \ - or self.numberExtrudersEnabled < 2: + or self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") < 2: return user_changes_container = self._global_container_stack.userChanges @@ -1009,7 +1009,7 @@ class MachineManager(QObject): for position, extruder in enumerate(self._global_container_stack.extruderList): if extruder.isEnabled and int(position) < machine_extruder_count: extruder_count += 1 - if self.numberExtrudersEnabled != extruder_count: + if self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") != extruder_count: definition_changes_container.setProperty("extruders_enabled_count", "value", extruder_count) self.numberExtrudersEnabledChanged.emit() diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index ded892d137..2c3a0939a8 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -64,7 +64,7 @@ class VersionUpgrade22to24(VersionUpgrade): config.remove_option("general", "containers") - for idx in range(len(container_list)): + for idx, _ in enumerate(container_list): config.set("containers", str(idx), container_list[idx]) output = io.StringIO() diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index 0b41578a05..57105b66a1 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -866,13 +866,13 @@ def readIndex(node, attr): v = readIntArray(node, attr, []) chunks = [] chunk = [] - for i in range(len(v)): - if v[i] == -1: + for i in v: + if i == -1: if chunk: chunks.append(chunk) chunk = [] else: - chunk.append(v[i]) + chunk.append(i) if chunk: chunks.append(chunk) return chunks diff --git a/resources/definitions/geeetech_Mizar_S.def.json b/resources/definitions/geeetech_Mizar_S.def.json new file mode 100644 index 0000000000..7cd7e42e68 --- /dev/null +++ b/resources/definitions/geeetech_Mizar_S.def.json @@ -0,0 +1,59 @@ +{ + "version": 2, + "name": "Geeetech Mizar_S", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Amit L", + "manufacturer": "Geeetech", + "file_formats": "text/x-gcode", + "has_materials": true, + "machine_extruder_trains": + { + "0": "geeetech_Mizar_S_1" + } + + }, + + "overrides": { + "machine_name": { "default_value": "Geeetech Mizar_S" }, + "machine_width": { + "default_value": 255 + }, + "machine_height": { + "default_value": 260 + }, + "machine_depth": { + "default_value": 255 + }, + "machine_center_is_zero": { + "default_value": false + }, + "layer_height": { "default_value": 0.1 }, + "layer_height_0": { "default_value": 0.15 }, + "retraction_amount": { "default_value": 0.8 }, + "retraction_speed": { "default_value": 35 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, + "gantry_height": { "value": "28" }, + "machine_max_feedrate_z": { "default_value": 12 }, + "machine_max_feedrate_e": { "default_value": 120 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 0.2 }, + "machine_max_jerk_e": { "default_value": 2.5 }, + "machine_heated_bed": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G28 ; Auto home\nG1 Z15 F300 ;Move up slightly\nM107 ;Off fans\nG90 ;Switch to absolute positioning\nM82 ;Extruder absolute mode\nG92 E0 ;Set position of extruder to 0\nG0 X10 Y20 F1500 ;Move to X10 Y20 at 1500mms\nG1 Z0.8 ;Move Z to 0.8\nG1 F300 X180 E40 ;Extrude a line of filament\nG1 F1200 Z2 ;Raise Z\nG92 E0 ;Set extruder position to zero\nG28 ;Auto home" + }, + "machine_end_gcode": { + "default_value": "G91 ;Switch to relative positioning\nG1 E-1 ;Retract filament to lower pressure\nG0 X0 Y200 ;Move hotend to left and bed forward\nM104 S0 ;Cooldown hotend\nG90 ;Switch to absolute mode\nG92 E0 ;Set extruder to zero\nM140 S0 ;Cooldown bed\nM84 ; Disable steppers" + }, + "machine_extruder_count": { + "default_value": 1 + } + + } +} diff --git a/resources/definitions/kingroon_base.def.json b/resources/definitions/kingroon_base.def.json index a8dd8725e2..4ea97f2527 100644 --- a/resources/definitions/kingroon_base.def.json +++ b/resources/definitions/kingroon_base.def.json @@ -129,7 +129,7 @@ "overrides": { "machine_name": { "default_value": "Kingroon Base Printer" }, "machine_start_gcode": { "default_value": "G28 ; home all axes\n M117 Purge extruder\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface\n G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position\n G1 X2 Y175.0 Z0.3 F1500.0 E15 ; draw 1st line\n G1 X2 Y175.0 Z0.4 F5000.0 ; move to side a little\n G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line\n G92 E0 ; reset extruder\n G1 Z1.0 F3000 ; move z up little to prevent scratching of surface"}, - "machine_end_gcode": { "default_value": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n G1 X0 Y200 F1000 ; prepare for part removal\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y300 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan" }, + "machine_end_gcode": { "default_value": "G91; relative positioning\n G1 Z1.0 F3000 ; move z up little to prevent scratching of print\n G90; absolute positioning\n M104 S0; turn off extruder\n M140 S0 ; turn off bed\n G1 X0 Y175 F1000 ; prepare for part removal\n M84 ; disable motors\n M106 S0 ; turn off fan" }, "machine_width": { "default_value": 180 }, "machine_depth": { "default_value": 180 }, diff --git a/resources/definitions/tank_m3.def.json b/resources/definitions/tank_m3.def.json new file mode 100644 index 0000000000..9a65397a64 --- /dev/null +++ b/resources/definitions/tank_m3.def.json @@ -0,0 +1,25 @@ +{ + "name": "Tank M3", + "version": 2, + "inherits": "tank_m_base", + "overrides": { + "machine_name": { "default_value": "Tank M3" }, + "machine_width": { "default_value": 235 }, + "machine_depth": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 0 } + + }, + "metadata": { + "quality_definition": "tank_m_base", + "visible": true + } +} diff --git a/resources/definitions/tank_m3_max.def.json b/resources/definitions/tank_m3_max.def.json new file mode 100644 index 0000000000..ef271dc2f5 --- /dev/null +++ b/resources/definitions/tank_m3_max.def.json @@ -0,0 +1,24 @@ +{ + "name": "Tank M3 Max", + "version": 2, + "inherits": "tank_m_base", + "overrides": { + "machine_name": { "default_value": "Tank M3 Max" }, + "machine_width": { "default_value": 310 }, + "machine_depth": { "default_value": 310 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 0 } + }, + "metadata": { + "quality_definition": "tank_m_base", + "visible": true + } +} diff --git a/resources/definitions/tank_m_base.def.json b/resources/definitions/tank_m_base.def.json new file mode 100644 index 0000000000..e4f465d39e --- /dev/null +++ b/resources/definitions/tank_m_base.def.json @@ -0,0 +1,124 @@ +{ + "name": "tank_m Base Printer", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": false, + "author": "tank_m", + "manufacturer": "tank_m", + "file_formats": "text/x-gcode", + "platform": "tank_m.obj", + "platform_texture": "tank_m.png", + + "first_start_actions": [ "MachineSettingsAction" ], + "machine_extruder_trains": {"0": "tank_m_base_extruder_0"}, + + "has_materials": true, + "has_machine_quality": true, + + + "preferred_quality_type": "standard", + "preferred_material": "generic_pla" + }, + + + "overrides": { + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Move to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd 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_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 50 }, + "machine_max_feedrate_e": { "value": 500 }, + + "machine_max_acceleration_x": { "value": 2500 }, + "machine_max_acceleration_y": { "value": 2500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_acceleration_e": { "value": 2000 }, + "machine_acceleration": { "value": 2500 }, + + "machine_heated_bed": { "default_value": true }, + + "material_diameter": { "default_value": 1.75 }, + + + "acceleration_print": { "value": 2500 }, + "acceleration_travel": { "value": 2500 }, + + "line_width": { "value": "machine_nozzle_size" }, + + "wall_thickness": {"value": "line_width * 2" }, + + "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, + + "infill_sparse_density": { "value": "15" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, + + "material_print_temperature": { "value": "195" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_bed_temperature": { "value": "55" }, + "material_bed_temperature_layer_0": { "value": "material_bed_temperature" }, + "material_flow": { "value": 100 }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + + "speed_print": { "value": 50.0 } , + "speed_infill": { "value": "speed_print" }, + "speed_wall": { "value": "speed_print / 2" }, + "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_topbottom": { "value": "speed_print / 2" }, + "speed_travel": { "value": "120.0 if speed_print < 60 else 300.0 if speed_print > 100 else speed_print * 2.2" }, + "speed_layer_0": { "value": 25.0 }, + "speed_print_layer_0": { "value": "speed_layer_0" }, + "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 25 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_z_hop": { "value": 5 }, + + "retraction_enable": { "value": true }, + "retraction_amount": { "value": 1.0 }, + "retraction_speed": { "value": 40 }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_fan_enabled": { "value": true }, + "cool_min_layer_time": { "value": 10 }, + + + "support_brim_enable": { "value": true }, + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_pattern": { "value": "'zigzag'" }, + "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 20" }, + "support_use_towers": { "value": false }, + "support_xy_distance": { "value": "wall_line_width_0 * 2" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, + "support_wall_count": { "value": 1 }, + "support_brim_width": { "value": 4 }, + + "support_enable": { "value": true }, + "support_interface_enable": { "value": true }, + "support_interface_height": { "value": "layer_height * 4" }, + "support_interface_density": { "value": 33.333 }, + "support_interface_pattern": { "value": "'grid'" }, + "support_interface_skip_height": { "value": 0.2 }, + "minimum_support_area": { "value": 2 }, + "minimum_interface_area": { "value": 10 }, + + "fill_outline_gaps": { "value": false }, + + "adhesion_type": { "value": "'skirt'" }, + "brim_replaces_support": { "value": false }, + "skirt_gap": { "value": 6.0 }, + "skirt_line_count": { "value": 3 } + + + } +} diff --git a/resources/extruders/geeetech_Mizar_S_1.def.json b/resources/extruders/geeetech_Mizar_S_1.def.json new file mode 100644 index 0000000000..da4440cd87 --- /dev/null +++ b/resources/extruders/geeetech_Mizar_S_1.def.json @@ -0,0 +1,17 @@ +{ + + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "geeetech_Mizar_S", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + + } +} diff --git a/resources/extruders/tank_m_base_extruder_0.def.json b/resources/extruders/tank_m_base_extruder_0.def.json new file mode 100644 index 0000000000..64bafe97d2 --- /dev/null +++ b/resources/extruders/tank_m_base_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Extruder 0", + "inherits": "fdmextruder", + "metadata": { + "machine": "tank_m_base", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + + } +} diff --git a/resources/images/tank_m.png b/resources/images/tank_m.png new file mode 100644 index 0000000000..b5c93afc5a Binary files /dev/null and b/resources/images/tank_m.png differ diff --git a/resources/meshes/tank_m.obj b/resources/meshes/tank_m.obj new file mode 100644 index 0000000000..c84c1e3efa --- /dev/null +++ b/resources/meshes/tank_m.obj @@ -0,0 +1,60 @@ +v 200 200 0 +v 200 -200 0 +v 200 -200 -4 +v 200 200 -4 +v -200 200 0 +v -200 200 -4 +v -200 -200 0 +v -200 -200 -4 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 1 +vt 0 0 +vt 1 0 +vt 0 1 +vt 1 1 +vt 0 0 +vt 1 0 +vt 0 1 +vt 1 1 +f 1/1 2/2 4/3 +f 4/3 2/2 3/4 +f 5/5 1/6 6/7 +f 6/7 1/6 4/8 +f 7/9 5/10 8/11 +f 8/11 5/10 6/12 +f 2/13 7/14 3/15 +f 3/15 7/14 8/16 +f 6/21 4/22 3/24 8/23 +v -50 270.7 70.7 +v 50 270.7 70.7 +v 50 200 0 +v -50 200 0 +v -50 270.7 66.7 +v 50 270.7 66.7 +v 50 200 -4 +v -50 200 -4 +vt 0 1 +vt 0 0 +vt 1 0 +vt 1 1 +vt 0 1 +f 10/1 11/2 15/3 14/4 +f 9/4 10/8 14/7 13/8 +f 12/9 9/10 13/11 16/12 +f 11/13 12/14 16/15 15/16 +f 12/26 11/27 10/28 9/25 +f 13/13 14/14 15/15 16/16 \ No newline at end of file diff --git a/resources/quality/tank_m_base_global_draft.inst.cfg b/resources/quality/tank_m_base_global_draft.inst.cfg new file mode 100644 index 0000000000..cd5d1a23c0 --- /dev/null +++ b/resources/quality/tank_m_base_global_draft.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Draft Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = draft +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/tank_m_base_global_high.inst.cfg b/resources/quality/tank_m_base_global_high.inst.cfg new file mode 100644 index 0000000000..26af4239b1 --- /dev/null +++ b/resources/quality/tank_m_base_global_high.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Super Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = high +weight = -1 +global_quality = True + +[values] +layer_height = 0.12 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*6 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*8 diff --git a/resources/quality/tank_m_base_global_standard.inst.cfg b/resources/quality/tank_m_base_global_standard.inst.cfg new file mode 100644 index 0000000000..eb7984c7ec --- /dev/null +++ b/resources/quality/tank_m_base_global_standard.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Standard Quality +definition = tank_m_base + +[metadata] +setting_version = 20 +type = quality +quality_type = standard +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4