Browse Source

Merge branch '2.3'

Conflicts:
	resources/definitions/fdmprinter.def.json
	resources/materials/generic_abs.xml.fdm_material
	resources/materials/generic_cpe.xml.fdm_material
	resources/materials/generic_nylon.xml.fdm_material
	resources/materials/generic_pla.xml.fdm_material
	resources/materials/ultimaker_abs_black.xml.fdm_material
	resources/materials/ultimaker_abs_blue.xml.fdm_material
	resources/materials/ultimaker_abs_green.xml.fdm_material
	resources/materials/ultimaker_abs_grey.xml.fdm_material
	resources/materials/ultimaker_abs_orange.xml.fdm_material
	resources/materials/ultimaker_abs_pearl-gold.xml.fdm_material
	resources/materials/ultimaker_abs_red.xml.fdm_material
	resources/materials/ultimaker_abs_silver-metallic.xml.fdm_material
	resources/materials/ultimaker_abs_white.xml.fdm_material
	resources/materials/ultimaker_abs_yellow.xml.fdm_material
	resources/materials/ultimaker_cpe_black.xml.fdm_material
	resources/materials/ultimaker_cpe_blue.xml.fdm_material
	resources/materials/ultimaker_cpe_dark-grey.xml.fdm_material
	resources/materials/ultimaker_cpe_green.xml.fdm_material
	resources/materials/ultimaker_cpe_light-grey.xml.fdm_material
	resources/materials/ultimaker_cpe_red.xml.fdm_material
	resources/materials/ultimaker_cpe_transparent.xml.fdm_material
	resources/materials/ultimaker_cpe_white.xml.fdm_material
	resources/materials/ultimaker_cpe_yellow.xml.fdm_material
	resources/materials/ultimaker_nylon_black.xml.fdm_material
	resources/materials/ultimaker_nylon_transparent.xml.fdm_material
	resources/materials/ultimaker_pla_black.xml.fdm_material
	resources/materials/ultimaker_pla_blue.xml.fdm_material
	resources/materials/ultimaker_pla_green.xml.fdm_material
	resources/materials/ultimaker_pla_magenta.xml.fdm_material
	resources/materials/ultimaker_pla_orange.xml.fdm_material
	resources/materials/ultimaker_pla_pearl-white.xml.fdm_material
	resources/materials/ultimaker_pla_red.xml.fdm_material
	resources/materials/ultimaker_pla_silver-metallic.xml.fdm_material
	resources/materials/ultimaker_pla_transparent.xml.fdm_material
	resources/materials/ultimaker_pla_white.xml.fdm_material
	resources/materials/ultimaker_pla_yellow.xml.fdm_material

Contributes to issue CURA-2737.
Ghostkeeper 8 years ago
parent
commit
3c9ebfab8f

+ 1 - 0
.gitignore

@@ -8,6 +8,7 @@ docs/html
 resources/i18n/en
 resources/i18n/x-test
 resources/firmware
+resources/materials
 LC_MESSAGES
 
 # Editors and IDEs.

+ 2 - 0
cura/ConvexHullDecorator.py

@@ -200,6 +200,8 @@ class ConvexHullDecorator(SceneNodeDecorator):
                     if len(vertex_data) >= 4:
                         convex_hull = hull.getConvexHull()
                         offset_hull = self._offsetHull(convex_hull)
+            else:
+                return Polygon([])  # Node has no mesh data, so just return an empty Polygon.
 
             # Store the result in the cache
             self._2d_convex_hull_mesh = mesh

+ 2 - 2
cura/CuraApplication.py

@@ -283,17 +283,17 @@ class CuraApplication(QtApplication):
                 cool_fan_enabled
             support
                 support_enable
+                support_extruder_nr
                 support_type
                 support_interface_density
             platform_adhesion
                 adhesion_type
+                adhesion_extruder_nr
                 brim_width
                 raft_airgap
                 layer_0_z_overlap
                 raft_surface_layers
             dual
-                adhesion_extruder_nr
-                support_extruder_nr
                 prime_tower_enable
                 prime_tower_size
                 prime_tower_position_x

+ 5 - 0
cura/Settings/SettingInheritanceManager.py

@@ -170,11 +170,16 @@ class SettingInheritanceManager(QObject):
     def _onGlobalContainerChanged(self):
         if self._global_container_stack:
             self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged)
+            self._global_container_stack.containersChanged.disconnect(self._onContainersChanged)
         self._global_container_stack = Application.getInstance().getGlobalContainerStack()
         if self._global_container_stack:
+            self._global_container_stack.containersChanged.connect(self._onContainersChanged)
             self._global_container_stack.propertyChanged.connect(self._onPropertyChanged)
         self._onActiveExtruderChanged()
 
+    def _onContainersChanged(self, container):
+        self._onActiveExtruderChanged()
+
     @staticmethod
     def createSettingInheritanceManager(engine=None, script_engine=None):
         return SettingInheritanceManager()

+ 2 - 1
plugins/GCodeWriter/GCodeWriter.py

@@ -13,6 +13,7 @@ from UM.Settings.InstanceContainer import InstanceContainer
 
 import re #For escaping characters in the settings.
 import json
+import copy
 
 ##  Writes g-code to a file.
 #
@@ -80,7 +81,7 @@ class GCodeWriter(MeshWriter):
             flat_container.setDefinition(instance_container1.getDefinition())
         else:
             flat_container.setDefinition(instance_container2.getDefinition())
-        flat_container.setMetaData(instance_container2.getMetaData())
+        flat_container.setMetaData(copy.deepcopy(instance_container2.getMetaData()))
 
         for key in instance_container2.getAllKeys():
             flat_container.setProperty(key, "value", instance_container2.getProperty(key, "value"))

+ 94 - 99
resources/definitions/fdmprinter.def.json

@@ -1331,39 +1331,6 @@
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
                 },
-                "retraction_hop_enabled":
-                {
-                    "label": "Z Hop when Retracted",
-                    "description": "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.",
-                    "type": "bool",
-                    "default_value": false,
-                    "enabled": "retraction_enable",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": true
-                },
-                "retraction_hop_only_when_collides":
-                {
-                    "label": "Z Hop Only Over Printed Parts",
-                    "description": "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling.",
-                    "type": "bool",
-                    "default_value": false,
-                    "enabled": "retraction_enable and retraction_hop_enabled and travel_avoid_other_parts",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": true
-                },
-                "retraction_hop":
-                {
-                    "label": "Z Hop Height",
-                    "description": "The height difference when performing a Z Hop.",
-                    "unit": "mm",
-                    "type": "float",
-                    "default_value": 1,
-                    "minimum_value_warning": "0.75 * machine_nozzle_size",
-                    "maximum_value_warning": "10",
-                    "enabled": "retraction_enable and retraction_hop_enabled",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": true
-                },
                 "material_standby_temperature":
                 {
                     "label": "Standby Temperature",
@@ -1440,16 +1407,6 @@
                             "settable_per_extruder": true
                         }
                     }
-                },
-                "retraction_hop_after_extruder_switch":
-                {
-                    "label": "Z Hop After Extruder Switch",
-                    "description": "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print.",
-                    "type": "bool",
-                    "default_value": true,
-                    "enabled": "retraction_hop_enabled",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": true
                 }
             }
         },
@@ -2259,6 +2216,45 @@
                     "enabled": "resolveOrValue('retraction_combing') != 'off' and travel_avoid_other_parts",
                     "settable_per_mesh": false,
                     "settable_per_extruder": true
+                },
+                "retraction_hop_enabled": {
+                    "label": "Z Hop when Retracted",
+                    "description": "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.",
+                    "type": "bool",
+                    "default_value": false,
+                    "enabled": "retraction_enable",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": true
+                },
+                "retraction_hop_only_when_collides": {
+                    "label": "Z Hop Only Over Printed Parts",
+                    "description": "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling.",
+                    "type": "bool",
+                    "default_value": false,
+                    "enabled": "retraction_enable and retraction_hop_enabled and travel_avoid_other_parts",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": true
+                },
+                "retraction_hop": {
+                    "label": "Z Hop Height",
+                    "description": "The height difference when performing a Z Hop.",
+                    "unit": "mm",
+                    "type": "float",
+                    "default_value": 1,
+                    "minimum_value_warning": "0.75 * machine_nozzle_size",
+                    "maximum_value_warning": "10",
+                    "enabled": "retraction_enable and retraction_hop_enabled",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": true
+                },
+                "retraction_hop_after_extruder_switch": {
+                    "label": "Z Hop After Extruder Switch",
+                    "description": "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print.",
+                    "type": "bool",
+                    "default_value": true,
+                    "enabled": "retraction_hop_enabled and machine_extruder_count > 1",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": true
                 }
             }
         },
@@ -2416,6 +2412,51 @@
                     "settable_per_mesh": true,
                     "settable_per_extruder": false
                 },
+                "support_extruder_nr":
+                {
+                    "label": "Support Extruder",
+                    "description": "The extruder train to use for printing the support. This is used in multi-extrusion.",
+                    "type": "extruder",
+                    "default_value": "0",
+                    "enabled": "support_enable and machine_extruder_count > 1",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": false,
+                    "children": {
+                        "support_infill_extruder_nr":
+                        {
+                            "label": "Support Infill Extruder",
+                            "description": "The extruder train to use for printing the infill of the support. This is used in multi-extrusion.",
+                            "type": "extruder",
+                            "default_value": "0",
+                            "value": "support_extruder_nr",
+                            "enabled": "support_enable and machine_extruder_count > 1",
+                            "settable_per_mesh": false,
+                            "settable_per_extruder": false
+                        },
+                        "support_extruder_nr_layer_0":
+                        {
+                            "label": "First Layer Support Extruder",
+                            "description": "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion.",
+                            "type": "extruder",
+                            "default_value": "0",
+                            "value": "support_extruder_nr",
+                            "enabled": "support_enable and machine_extruder_count > 1",
+                            "settable_per_mesh": false,
+                            "settable_per_extruder": false
+                        },
+                        "support_interface_extruder_nr":
+                        {
+                            "label": "Support Interface Extruder",
+                            "description": "The extruder train to use for printing the roofs and bottoms of the support. This is used in multi-extrusion.",
+                            "type": "extruder",
+                            "default_value": "0",
+                            "value": "support_extruder_nr",
+                            "enabled": "support_enable and machine_extruder_count > 1",
+                            "settable_per_mesh": false,
+                            "settable_per_extruder": false
+                        }
+                    }
+                },
                 "support_type":
                 {
                     "label": "Support Placement",
@@ -2858,6 +2899,16 @@
                     "settable_per_mesh": false,
                     "settable_per_extruder": false
                 },
+                "adhesion_extruder_nr":
+                {
+                    "label": "Build Plate Adhesion Extruder",
+                    "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.",
+                    "type": "extruder",
+                    "default_value": "0",
+                    "enabled": "machine_extruder_count > 1",
+                    "settable_per_mesh": false,
+                    "settable_per_extruder": false
+                },
                 "skirt_line_count":
                 {
                     "label": "Skirt Line Count",
@@ -3407,62 +3458,6 @@
             "enabled": "machine_extruder_count > 1",
             "children":
             {
-                "adhesion_extruder_nr":
-                {
-                    "label": "Build Plate Adhesion Extruder",
-                    "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.",
-                    "type": "extruder",
-                    "default_value": "0",
-                    "enabled": "machine_extruder_count > 1",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": false
-                },
-                "support_extruder_nr":
-                {
-                    "label": "Support Extruder",
-                    "description": "The extruder train to use for printing the support. This is used in multi-extrusion.",
-                    "type": "extruder",
-                    "default_value": "0",
-                    "enabled": "support_enable and machine_extruder_count > 1",
-                    "settable_per_mesh": false,
-                    "settable_per_extruder": false,
-                    "children":
-                    {
-                        "support_infill_extruder_nr":
-                        {
-                            "label": "Support Infill Extruder",
-                            "description": "The extruder train to use for printing the infill of the support. This is used in multi-extrusion.",
-                            "type": "extruder",
-                            "default_value": "0",
-                            "value": "support_extruder_nr",
-                            "enabled": "support_enable and machine_extruder_count > 1",
-                            "settable_per_mesh": false,
-                            "settable_per_extruder": false
-                        },
-                        "support_extruder_nr_layer_0":
-                        {
-                            "label": "First Layer Support Extruder",
-                            "description": "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion.",
-                            "type": "extruder",
-                            "default_value": "0",
-                            "value": "support_extruder_nr",
-                            "enabled": "support_enable and machine_extruder_count > 1",
-                            "settable_per_mesh": false,
-                            "settable_per_extruder": false
-                        },
-                        "support_interface_extruder_nr":
-                        {
-                            "label": "Support Interface Extruder",
-                            "description": "The extruder train to use for printing the roofs and bottoms of the support. This is used in multi-extrusion.",
-                            "type": "extruder",
-                            "default_value": "0",
-                            "value": "support_extruder_nr",
-                            "enabled": "support_enable and machine_extruder_count > 1",
-                            "settable_per_mesh": false,
-                            "settable_per_extruder": false
-                        }
-                    }
-                },
                 "prime_tower_enable":
                 {
                     "label": "Enable Prime Tower",

+ 84 - 0
resources/definitions/ultimaker3.def.json

@@ -0,0 +1,84 @@
+{
+    "id": "ultimaker3",
+    "version": 2,
+    "name": "Ultimaker 3",
+    "inherits": "ultimaker",
+    "metadata": {
+        "author": "Ultimaker",
+        "manufacturer": "Ultimaker",
+        "category": "Ultimaker",
+        "visible": true,
+        "file_formats": "text/x-gcode",
+        "platform": "ultimaker3_platform.obj",
+        "platform_texture": "Ultimaker3backplate.png",
+        "platform_offset": [0, 0, 0],
+        "has_machine_quality": true,
+        "has_materials": true,
+        "has_machine_materials": true,
+        "has_variant_materials": true,
+        "has_variants": true,
+        "preferred_variant": "*aa*",
+        "preferred_quality": "*Normal*",
+        "variants_name": "Print core",
+        "machine_extruder_trains":
+        {
+            "0": "ultimaker3_extruder_left",
+            "1": "ultimaker3_extruder_right"
+        },
+        "first_start_actions": [ "DiscoverUM3Action" ],
+        "supported_actions": [ "DiscoverUM3Action" ],
+        "supports_usb_connection": false
+    },
+
+
+
+    "overrides": {
+        "machine_name": { "default_value": "Ultimaker 3" },
+        "machine_width": { "default_value": 215 },
+        "machine_depth": { "default_value": 215 },
+        "machine_height": { "default_value": 200 },
+        "machine_heated_bed": { "default_value": true },
+        "machine_nozzle_heat_up_speed": { "default_value": 0.8 },
+        "machine_nozzle_cool_down_speed": { "default_value": 1 },
+        "machine_head_with_fans_polygon":
+        {
+            "default_value":
+            [
+                [ -40, 10 ],
+                [ -40, -30 ],
+                [ 60, 10 ],
+                [ 60, -30 ]
+            ]
+        },
+        "machine_center_is_zero": { "default_value": false },
+        "machine_gcode_flavor": { "default_value": "Griffin" },
+        "machine_max_feedrate_x": { "default_value": 300 },
+        "machine_max_feedrate_y": { "default_value": 300 },
+        "machine_max_feedrate_z": { "default_value": 40 },
+        "machine_acceleration": { "default_value": 3000 },
+        "gantry_height": { "default_value": 60 },
+        "machine_use_extruder_offset_to_offset_coords": { "default_value": true },
+        "machine_disallowed_areas": { "default_value": [
+            [[-91.5, -115], [-115, -115], [-115, -104.6], [-91.5, -104.6]],
+            [[-99.5, -104.6], [-115, -104.6], [-115, 104.6], [-99.5, 104.6]],
+            [[-94.5, 104.6], [-115, 104.6], [-115, 105.5], [-94.5, 105.5]],
+            [[-91.4, 105.5], [-115, 105.5], [-115, 115], [-91.4, 115]],
+
+            [[77.3, -115], [77.3, -98.6], [115, -98.6], [115, -115]],
+            [[97.2, -98.6], [97.2, -54.5], [113, -54.5], [113, -98.6]],
+            [[100.5, -54.5], [100.5, 99.3], [115, 99.3], [115, -54.5]],
+            [[77, 99.3], [77, 115], [115, 115], [115, 99.3]]
+        ]},
+        "machine_show_variants": { "default_value": true },
+        "machine_extruder_count": { "default_value": 2 },
+        "print_sequence": {"enabled": false},
+        "extruder_prime_pos_abs": { "default_value": true },
+        "extruder_prime_pos_x": { "enabled": false },
+        "extruder_prime_pos_y": { "enabled": false },
+        "machine_start_gcode": { "default_value": "" },
+        "machine_end_gcode": { "default_value": "" },
+        "prime_tower_position_x": { "default_value": 175 },
+        "prime_tower_position_y": { "default_value": 179 },
+        "speed_prime_tower": { "default_value": 30 }
+    }
+}

+ 36 - 0
resources/definitions/ultimaker3_extended.def.json

@@ -0,0 +1,36 @@
+{
+    "id": "ultimaker3_extended",
+    "version": 2,
+    "name": "Ultimaker 3 Extended",
+    "inherits": "ultimaker3",
+    "metadata": {
+        "author": "Ultimaker",
+        "manufacturer": "Ultimaker",
+        "category": "Ultimaker",
+        "quality_definition": "ultimaker3",
+        "visible": true,
+        "file_formats": "text/x-gcode",
+        "platform": "ultimaker3_platform.obj",
+        "platform_texture": "Ultimaker3Extendedbackplate.png",
+        "platform_offset": [0, 0, 0],
+        "has_machine_quality": true,
+	"has_machine_materials": true,
+        "has_variant_materials": true,
+        "has_materials": true,
+        "has_variants": true,
+        "preferred_variant": "*aa*",
+        "variants_name": "Print core",
+        "machine_extruder_trains":
+        {
+            "0": "ultimaker3_extended_extruder_left",
+            "1": "ultimaker3_extended_extruder_right"
+        },
+        "first_start_actions": [ "DiscoverUM3Action" ],
+        "supported_actions": [ "DiscoverUM3Action" ]
+    },
+
+    "overrides": {
+        "machine_name": { "default_value": "Ultimaker 3 Extended" },
+        "machine_height": { "default_value": 300 }
+    }
+}

+ 30 - 0
resources/extruders/ultimaker3_extended_extruder_left.def.json

@@ -0,0 +1,30 @@
+{
+    "id": "ultimaker3_extended_extruder_left",
+    "version": 2,
+    "name": "Print core 1",
+    "inherits": "fdmextruder",
+    "metadata": {
+        "machine": "ultimaker3_extended",
+        "position": "0"
+    },
+
+    "overrides": {
+        "extruder_nr": {
+            "default_value": 0,
+            "maximum_value": "1"
+        },
+        "machine_nozzle_offset_x": { "default_value": -11.0 },
+        "machine_nozzle_offset_y": { "default_value": 3.9 },
+
+        "machine_extruder_start_pos_abs": { "default_value": true },
+        "machine_extruder_start_pos_x": { "default_value": 213 },
+        "machine_extruder_start_pos_y": { "default_value": 207 },
+        "machine_extruder_end_pos_abs": { "default_value": true },
+        "machine_extruder_end_pos_x": { "default_value": 213 },
+        "machine_extruder_end_pos_y": { "default_value": 207 },
+        "machine_nozzle_head_distance": { "default_value": 2.7 },
+        "extruder_prime_pos_x": { "default_value": 170, "enabled": false },
+        "extruder_prime_pos_y": { "default_value": 6, "enabled": false },
+        "extruder_prime_pos_z": { "default_value": 2, "enabled": false }
+    }
+}

+ 30 - 0
resources/extruders/ultimaker3_extended_extruder_right.def.json

@@ -0,0 +1,30 @@
+{
+    "id": "ultimaker3_extended_extruder_right",
+    "version": 2,
+    "name": "Print core 2",
+    "inherits": "fdmextruder",
+    "metadata": {
+        "machine": "ultimaker3_extended",
+        "position": "1"
+    },
+
+    "overrides": {
+        "extruder_nr": {
+            "default_value": 1,
+            "maximum_value": "1"
+        },
+        "machine_nozzle_offset_x": { "default_value": 7.0 },
+        "machine_nozzle_offset_y": { "default_value": 3.9 },
+
+        "machine_extruder_start_pos_abs": { "default_value": true },
+        "machine_extruder_start_pos_x": { "default_value": 213 },
+        "machine_extruder_start_pos_y": { "default_value": 189 },
+        "machine_extruder_end_pos_abs": { "default_value": true },
+        "machine_extruder_end_pos_x": { "default_value": 213 },
+        "machine_extruder_end_pos_y": { "default_value": 189 },
+        "machine_nozzle_head_distance": { "default_value": 4.2 },
+        "extruder_prime_pos_x": { "default_value": 182, "enabled": false },
+        "extruder_prime_pos_y": { "default_value": 6, "enabled": false },
+        "extruder_prime_pos_z": { "default_value": 2, "enabled": false }
+    }
+}

Some files were not shown because too many files changed in this diff