diff --git a/README.md b/README.md
index 37978a30f9..35cf48ea5e 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@
[![Button Settings]][Settings]
[![Button Localize]][Localize]
+[![Button Libraries]][Libraries]
+
@@ -75,6 +77,7 @@
[Report]: docs/Report.md
[Logo]: resources/images/cura-icon.png
[#]: #
+[Libraries]: https://github.com/Ultimaker/Cura/blob/main/licenses_thirdparty
@@ -90,6 +93,7 @@
[Badge Downloads]: https://img.shields.io/github/downloads-pre/Ultimaker/Cura/latest/total?style=for-the-badge
+
[Button Localize]: https://img.shields.io/badge/Help_Localize-e2467d?style=for-the-badge&logoColor=white&logo=GoogleTranslate
@@ -98,5 +102,6 @@
[Button Building]: https://img.shields.io/badge/Building_Cura-blue?style=for-the-badge&logoColor=white&logo=GitBook
[Button Plugins]: https://img.shields.io/badge/Plugin_Usage-569A31?style=for-the-badge&logoColor=white&logo=ROS
[Button Report]: https://img.shields.io/badge/Report_Issues-C9284D?style=for-the-badge&logoColor=white&logo=Cliqz
+[Button Libraries]: https://img.shields.io/badge/third--party_libraries-b928c9?style=for-the-badge
diff --git a/licenses_thirdparty/qt.md b/licenses_thirdparty/qt.md
new file mode 100644
index 0000000000..bf84121a2e
--- /dev/null
+++ b/licenses_thirdparty/qt.md
@@ -0,0 +1,24 @@
+Sources for the Qt modules that Cura uses (links within UltiMaker repositories):
+
+- qtbase: https://github.com/Ultimaker/qtbase
+- qtdeclarative: https://github.com/Ultimaker/qtdeclarative
+- qtsvg: https://github.com/Ultimaker/qtsvg
+- qtshadertools: https://github.com/Ultimaker/qtshadertools
+- qtimageformats: https://github.com/Ultimaker/qtimageformats
+
+Sources for Qt modules that Cura doesn't use (and thus aren't necessary for building or running any part of Cura), but that may be shipped along the product anyway due to our build-process (links to off-site):
+
+- qtsensors: https://github.com/qt/qtsensors
+- qtmultimedia: https://github.com/qt/qtmultimedia
+- qtpositioning: https://github.com/qt/qtpositioning
+- qtremoteobjects: https://github.com/qt/qtremoteobjects
+- qttexttospeech: https://github.com/qt/qtspeech
+- qtwebchannel: https://github.com/qt/qtwebchannel
+- qtwebsockets: https://github.com/qt/qtwebsockets
+- qtserialport: https://github.com/qt/qtserialport
+- qt (5) (linux): https://github.com/qt/qt5
+
+Versions of Qt used in Cura (from 5.9.1 onwards):
+
+- 5.9.x: Qt 6.6.0
+- 5.10.x: Qt 6.6.0
diff --git a/resources/definitions/ultimaker_replicator_plus.def.json b/resources/definitions/ultimaker_replicator_plus.def.json
new file mode 100644
index 0000000000..6616b98143
--- /dev/null
+++ b/resources/definitions/ultimaker_replicator_plus.def.json
@@ -0,0 +1,274 @@
+{
+ "version": 2,
+ "name": "MakerBot Replicator+",
+ "inherits": "ultimaker",
+ "metadata":
+ {
+ "visible": true,
+ "author": "Ultimaker",
+ "manufacturer": "Ultimaker B.V.",
+ "file_formats": "application/x-makerbot-replicator_plus",
+ "platform": "ultimaker_replicator_plus_platform.3MF",
+ "exclude_materials": [
+ "dsm_",
+ "Essentium_",
+ "imade3d_",
+ "chromatik_",
+ "3D-Fuel_",
+ "bestfilament_",
+ "eazao_",
+ "emotiontech_",
+ "eryone_",
+ "eSUN_",
+ "Extrudr_",
+ "fabtotum_",
+ "fdplast_",
+ "filo3d_",
+ "ultimaker_rapidrinse_175",
+ "goofoo_",
+ "ideagen3D_",
+ "imade3d_",
+ "innofill_",
+ "layer_one_",
+ "leapfrog_",
+ "polyflex_pla",
+ "polymax_pla",
+ "polyplus_pla",
+ "polywood_pla",
+ "redd_",
+ "tizyx_",
+ "verbatim_",
+ "Vertex_",
+ "volumic_",
+ "xyzprinting_",
+ "zyyx_pro_",
+ "octofiber_",
+ "fiberlogy_",
+ "generic_",
+ "ultimaker_asa",
+ "ultimaker_abs",
+ "ultimaker_nylon",
+ "ultimaker_pva",
+ "ultimaker_rapidrinse",
+ "ultimaker_sr30",
+ "ultimaker_petg",
+ "basf_",
+ "jabil_",
+ "polymaker_",
+ "lehvoss",
+ "ultimaker_metallic_pla",
+ "ultimaker_pc-abs"
+ ],
+ "has_machine_quality": true,
+ "has_materials": true,
+ "has_variants": true,
+ "machine_extruder_trains": { "0": "ultimaker_replicator_extruder" },
+ "preferred_material": "ultimaker_pla_175",
+ "preferred_quality_type": "draft",
+ "preferred_variant_name": "ultimaker_replicator_smart_extruder_plus",
+ "reference_machine_id": "replicator_b",
+ "supports_network_connection": true,
+ "supports_usb_connection": false,
+ "variants_name": "Extruder",
+ "weight": -1
+ },
+ "overrides":
+ {
+ "acceleration_enabled":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "adhesion_type": { "value": "'raft'" },
+ "brim_width": { "value": "3" },
+ "cool_during_extruder_switch":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "cool_fan_full_at_height": { "value": "layer_height + layer_height_0" },
+ "cool_fan_speed": { "value": 100 },
+ "cool_fan_speed_0": { "value": 0 },
+ "cool_min_layer_time": { "value": 5 },
+ "extruder_prime_pos_abs": { "default_value": true },
+ "fill_outline_gaps": { "value": true },
+ "gantry_height": { "value": "60" },
+ "gradual_support_infill_steps": { "value": 0 },
+ "infill_angles": { "value": "[45,45,45,45,45,135,135,135,135,135]" },
+ "infill_before_walls": { "value": false },
+ "infill_overlap": { "value": 0 },
+ "infill_pattern": { "value": "'zigzag'" },
+ "infill_sparse_density": { "value": 10 },
+ "infill_wipe_dist": { "value": 0 },
+ "initial_layer_line_width_factor":
+ {
+ "maximum_value": 300,
+ "maximum_value_warning": 250,
+ "value": "125 if resolveOrValue('adhesion_type') == 'raft' else 200"
+ },
+ "inset_direction": { "value": "'inside_out'" },
+ "jerk_enabled":
+ {
+ "enabled": false,
+ "value": false
+ },
+ "layer_height_0": { "value": "0.2 if resolveOrValue('adhesion_type') == 'raft' else 0.3" },
+ "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
+ "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
+ "machine_center_is_zero": { "default_value": true },
+ "machine_depth": { "default_value": 195 },
+ "machine_end_gcode": { "default_value": "; End GCode\n" },
+ "machine_extruder_count": { "default_value": 1 },
+ "machine_gcode_flavor": { "default_value": "Marlin" },
+ "machine_heated_bed": { "default_value": true },
+ "machine_height": { "default_value": 165 },
+ "machine_max_feedrate_x": { "default_value": 200 },
+ "machine_max_feedrate_y": { "default_value": 200 },
+ "machine_max_feedrate_z": { "default_value": 25 },
+ "machine_min_cool_heat_time_window": { "value": "15" },
+ "machine_name": { "default_value": "MakerBot Replicator+" },
+ "machine_nozzle_cool_down_speed": { "default_value": 0.8 },
+ "machine_nozzle_heat_up_speed": { "default_value": 1.4 },
+ "machine_start_gcode": { "default_value": "; Start GCode\n" },
+ "machine_width": { "default_value": 295 },
+ "material_bed_temperature": { "enabled": false },
+ "material_bed_temperature_layer_0": { "enabled": false },
+ "material_diameter": { "default_value": 1.75 },
+ "material_final_print_temperature":
+ {
+ "enabled": false,
+ "value": "material_print_temperature"
+ },
+ "material_flow": { "default_value": 100 },
+ "material_initial_print_temperature":
+ {
+ "enabled": false,
+ "value": "material_print_temperature"
+ },
+ "material_print_temperature":
+ {
+ "maximum_value": 250,
+ "maximum_value_warning": 235
+ },
+ "material_print_temperature_layer_0":
+ {
+ "maximum_value": 250,
+ "maximum_value_warning": 235,
+ "value": "material_print_temperature + 5"
+ },
+ "min_bead_width":
+ {
+ "minimum_value": "line_width * 0.5",
+ "minimum_value_warning": "line_width * 0.625",
+ "value": "line_width * 0.75"
+ },
+ "min_wall_line_width":
+ {
+ "minimum_value": "line_width * 0.5",
+ "minimum_value_warning": "line_width * 0.75",
+ "value": "line_width"
+ },
+ "minimum_support_area": { "value": 0.5 },
+ "multiple_mesh_overlap": { "value": "0" },
+ "optimize_wall_printing_order": { "value": "True" },
+ "prime_blob_enable":
+ {
+ "default_value": false,
+ "enabled": false,
+ "value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
+ },
+ "print_sequence": { "enabled": false },
+ "raft_airgap": { "value": 0.3 },
+ "raft_base_flow": { "value": 120 },
+ "raft_base_infill_overlap": { "value": 25 },
+ "raft_base_line_spacing": { "value": 2.5 },
+ "raft_base_line_width": { "value": 2 },
+ "raft_base_thickness": { "value": 0.4 },
+ "raft_interface_fan_speed": { "value": 0 },
+ "raft_interface_infill_overlap": { "value": 25 },
+ "raft_interface_wall_count": { "value": "raft_wall_count" },
+ "raft_margin": { "value": 6.5 },
+ "raft_surface_fan_speed": { "value": 50.0 },
+ "raft_surface_infill_overlap": { "value": 35 },
+ "raft_surface_wall_count": { "value": "raft_wall_count" },
+ "raft_wall_count": { "value": 2 },
+ "retract_at_layer_change": { "value": true },
+ "retraction_amount":
+ {
+ "maximum_value": 5,
+ "maximum_value_warning": 2.5,
+ "value": 0.5
+ },
+ "retraction_combing": { "value": "'infill'" },
+ "retraction_count_max":
+ {
+ "maximum_value": 700,
+ "maximum_value_warning": 600,
+ "value": 500
+ },
+ "retraction_extra_prime_amount": { "value": 0.1 },
+ "retraction_min_travel": { "value": "2 * line_width" },
+ "retraction_prime_speed":
+ {
+ "maximum_values": 35,
+ "value": 30
+ },
+ "retraction_retract_speed":
+ {
+ "maximum_value": 55,
+ "value": 50
+ },
+ "retraction_speed":
+ {
+ "maximum_value": 55,
+ "value": 50
+ },
+ "roofing_material_flow": { "value": "material_flow" },
+ "skin_material_flow": { "value": "material_flow" },
+ "skin_material_flow_layer_0": { "value": "material_flow" },
+ "skirt_brim_line_width": { "value": 0.8 },
+ "skirt_brim_minimal_length": { "value": 150 },
+ "skirt_brim_speed": { "value": 15 },
+ "skirt_height": { "value": 3 },
+ "speed_equalize_flow_width_factor": { "value": 100 },
+ "speed_print": { "value": 90 },
+ "speed_roofing": { "value": "1 * speed_print" },
+ "speed_support": { "value": "1 * speed_print" },
+ "speed_support_interface": { "value": "speed_support" },
+ "speed_topbottom": { "value": "speed_roofing" },
+ "speed_travel": { "value": 150 },
+ "speed_wall": { "value": "1 * speed_print" },
+ "speed_wall_0": { "value": "4/9 * speed_wall" },
+ "speed_wall_x": { "value": "1 * speed_wall" },
+ "speed_z_hop": { "value": 10 },
+ "support_angle": { "value": 68 },
+ "support_bottom_enable": { "value": false },
+ "support_brim_enable": { "value": false },
+ "support_connect_zigzags": { "value": false },
+ "support_infill_angles": { "value": "[45]" },
+ "support_infill_rate": { "value": 20 },
+ "support_interface_density": { "value": 90 },
+ "support_interface_enable": { "value": true },
+ "support_interface_height": { "value": 0.8 },
+ "support_interface_wall_count": { "value": 0 },
+ "support_line_width": { "value": 0.35 },
+ "support_material_flow": { "value": 90 },
+ "support_offset": { "value": 1 },
+ "support_structure": { "value": "'normal'" },
+ "support_use_towers": { "value": false },
+ "support_xy_distance": { "value": 0.3 },
+ "support_z_distance": { "value": 0.2 },
+ "top_bottom_thickness": { "value": "4 * layer_height" },
+ "travel_avoid_distance": { "value": 2 },
+ "travel_avoid_supports": { "value": true },
+ "wall_0_inset": { "value": "0" },
+ "wall_0_material_flow_layer_0": { "value": "material_flow" },
+ "wall_thickness": { "value": "2 * machine_nozzle_size" },
+ "wall_x_material_flow": { "value": "material_flow" },
+ "wall_x_material_flow_layer_0": { "value": "1 * material_flow" },
+ "xy_offset": { "value": 0 },
+ "xy_offset_layer_0": { "value": 0 },
+ "z_seam_corner": { "value": "'z_seam_corner_any'" },
+ "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
+ }
+}
\ No newline at end of file
diff --git a/resources/extruders/ultimaker_replicator_extruder.def.json b/resources/extruders/ultimaker_replicator_extruder.def.json
new file mode 100644
index 0000000000..c8fff87967
--- /dev/null
+++ b/resources/extruders/ultimaker_replicator_extruder.def.json
@@ -0,0 +1,22 @@
+{
+ "version": 2,
+ "name": "Extruder",
+ "inherits": "fdmextruder",
+ "metadata":
+ {
+ "machine": "ultimaker_replicator_plus",
+ "position": "0"
+ },
+ "overrides":
+ {
+ "extruder_nr":
+ {
+ "default_value": 0,
+ "maximum_value": 0
+ },
+ "machine_nozzle_offset_x": { "default_value": 0 },
+ "machine_nozzle_offset_y": { "default_value": 0 },
+ "machine_nozzle_size": { "default_value": 0.4 },
+ "material_diameter": { "default_value": 1.75 }
+ }
+}
\ No newline at end of file
diff --git a/resources/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg b/resources/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg
new file mode 100644
index 0000000000..d4b1006f9d
--- /dev/null
+++ b/resources/intent/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm_quick.inst.cfg
@@ -0,0 +1,18 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Quick
+version = 4
+
+[metadata]
+intent_category = quick
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = intent
+variant = Smart Extruder+
+
+[values]
+jerk_print = 30
+speed_wall = =speed_print
+speed_wall_0 = =speed_wall
+
diff --git a/resources/meshes/ultimaker_replicator_plus_platform.3MF b/resources/meshes/ultimaker_replicator_plus_platform.3MF
new file mode 100644
index 0000000000..1d250b8113
Binary files /dev/null and b/resources/meshes/ultimaker_replicator_plus_platform.3MF differ
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..e41549827b
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast - Experimental
+version = 4
+
+[metadata]
+is_experimental = True
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Experimental
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..8f9c4614d1
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_experimental_um-tough-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,16 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast - Experimental
+version = 4
+
+[metadata]
+is_experimental = True
+material = ultimaker_tough_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Experimental
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..0d072a6d65
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_tough_um-tough-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+material = ultimaker_tough_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+ Tough
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg
new file mode 100644
index 0000000000..9f85e44b37
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_b_smartextruder_plus_um-pla-175_0.2mm.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+material = ultimaker_pla_175
+quality_type = draft
+setting_version = 24
+type = quality
+variant = Smart Extruder+
+weight = -2
+
+[values]
+
diff --git a/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg
new file mode 100644
index 0000000000..3bc6c14dae
--- /dev/null
+++ b/resources/quality/ultimaker_replicator_plus/um_replicator_plus_global_Draft_Quality.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Fast
+version = 4
+
+[metadata]
+global_quality = True
+quality_type = draft
+setting_version = 24
+type = quality
+weight = -2
+
+[values]
+layer_height = 0.2
+
diff --git a/resources/texts/product_to_id.json b/resources/texts/product_to_id.json
index e99ead0985..34d7e53ba9 100644
--- a/resources/texts/product_to_id.json
+++ b/resources/texts/product_to_id.json
@@ -18,6 +18,7 @@
"UltiMaker Method": "ultimaker_method",
"UltiMaker Method X": "ultimaker_methodx",
"UltiMaker Method XL": "ultimaker_methodxl",
+ "UltiMaker Replicator+": "ultimaker_replicator_plus",
"UltiMaker Sketch": "ultimaker_sketch",
"UltiMaker Sketch Large": "ultimaker_sketch_large"
}
\ No newline at end of file
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg
new file mode 100644
index 0000000000..96bf727bf2
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg
new file mode 100644
index 0000000000..2a2a6ba777
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus_im-pla.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+ Tough
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13_im-pla
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+ Tough
+machine_nozzle_size = 0.4
+
diff --git a/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg b/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg
new file mode 100644
index 0000000000..8246843c3d
--- /dev/null
+++ b/resources/variants/ultimaker_replicator_smart_extruder_plus_labs.inst.cfg
@@ -0,0 +1,15 @@
+[general]
+definition = ultimaker_replicator_plus
+name = Smart Extruder+ Experimental
+version = 4
+
+[metadata]
+hardware_type = nozzle
+reference_extruder_id = mk13_experimental
+setting_version = 24
+type = variant
+
+[values]
+machine_nozzle_id = Smart Extruder+ Experimental
+machine_nozzle_size = 0.4
+