Просмотр исходного кода

Merge pull request #2056 from Ultimaker/top_most_skin_feature

Top most skin feature (CURA-3940)
Lipu Fei 7 лет назад
Родитель
Сommit
2aa8e590bf
2 измененных файлов с 117 добавлено и 6 удалено
  1. 1 0
      cura/Settings/ExtruderManager.py
  2. 116 6
      resources/definitions/fdmprinter.def.json

+ 1 - 0
cura/Settings/ExtruderManager.py

@@ -448,6 +448,7 @@ class ExtruderManager(QObject):
             limit_to_extruder_feature_list = ["wall_extruder_nr",
                                               "wall_0_extruder_nr",
                                               "wall_x_extruder_nr",
+                                              "roofing_extruder_nr",
                                               "top_bottom_extruder_nr",
                                               "infill_extruder_nr",
                                               ]

+ 116 - 6
resources/definitions/fdmprinter.def.json

@@ -699,6 +699,21 @@
                                 }
                             }
                         },
+                        "roofing_line_width":
+                        {
+                            "label": "Top Surface Infill Line Width",
+                            "description": "Width of a single line of the areas at the top of the print.",
+                            "unit": "mm",
+                            "minimum_value": "0.001",
+                            "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size",
+                            "maximum_value_warning": "2 * machine_nozzle_size",
+                            "default_value": 0.4,
+                            "type": "float",
+                            "value": "skin_line_width",
+                            "limit_to_extruder": "roofing_extruder_nr",
+                            "settable_per_mesh": true,
+                            "enabled": "roofing_layer_count > 0 and top_layers > 0"
+                        },
                         "skin_line_width":
                         {
                             "label": "Top/Bottom Line Width",
@@ -855,7 +870,6 @@
                     "description": "The extruder train used for printing the walls. This is used in multi-extrusion.",
                     "type": "optional_extruder",
                     "default_value": "-1",
-                    "value": "-1",
                     "settable_per_mesh": true,
                     "settable_per_extruder": false,
                     "settable_per_meshgroup": true,
@@ -933,13 +947,66 @@
                     "limit_to_extruder": "wall_0_extruder_nr",
                     "settable_per_mesh": true
                 },
+                "roofing_extruder_nr":
+                {
+                    "label": "Top Surface Infill Extruder",
+                    "description": "The extruder train used for printing the top most skin. This is used in multi-extrusion.",
+                    "type": "optional_extruder",
+                    "default_value": "-1",
+                    "value": "top_bottom_extruder_nr",
+                    "settable_per_mesh": true,
+                    "settable_per_extruder": false,
+                    "settable_per_meshgroup": true,
+                    "settable_globally": true,
+                    "enabled": "machine_extruder_count > 1 and roofing_layer_count > 0 and top_layers > 0"
+                },
+                "roofing_layer_count":
+                {
+                    "label": "Top Surface Infill Layers",
+                    "description": "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces.",
+                    "default_value": 0,
+                    "minimum_value": "0",
+                    "maximum_value_warning": "top_layers - 1",
+                    "type": "int",
+                    "value": "0 if infill_sparse_density == 100 else 1",
+                    "limit_to_extruder": "roofing_extruder_nr",
+                    "settable_per_mesh": true,
+                    "enabled": "top_layers > 0"
+                },
+                "roofing_pattern":
+                {
+                    "label": "Top Surface Infill Pattern",
+                    "description": "The pattern of the top most layers.",
+                    "type": "enum",
+                    "options":
+                    {
+                        "lines": "Lines",
+                        "concentric": "Concentric",
+                        "zigzag": "Zig Zag"
+                    },
+                    "default_value": "lines",
+                    "value": "top_bottom_pattern",
+                    "limit_to_extruder": "roofing_extruder_nr",
+                    "settable_per_mesh": true,
+                    "enabled": "roofing_layer_count > 0 and top_layers > 0"
+                },
+                "roofing_angles":
+                {
+                    "label": "Top Surface Infill Line Directions",
+                    "description": "A list of integer line directions to use when the top surface infill layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).",
+                    "type": "[int]",
+                    "default_value": "[ ]",
+                    "value": "skin_angles",
+                    "enabled": "roofing_pattern != 'concentric'",
+                    "limit_to_extruder": "roofing_extruder_nr",
+                    "settable_per_mesh": true
+                },
                 "top_bottom_extruder_nr":
                 {
                     "label": "Top/Bottom Extruder",
                     "description": "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion.",
                     "type": "optional_extruder",
                     "default_value": "-1",
-                    "value": "-1",
                     "settable_per_mesh": true,
                     "settable_per_extruder": false,
                     "settable_per_meshgroup": true,
@@ -1245,7 +1312,6 @@
                     "description": "The extruder train used for printing infill. This is used in multi-extrusion.",
                     "type": "optional_extruder",
                     "default_value": "-1",
-                    "value": "-1",
                     "settable_per_mesh": true,
                     "settable_per_extruder": false,
                     "settable_per_meshgroup": true,
@@ -2011,6 +2077,21 @@
                                 }
                             }
                         },
+                        "speed_roofing":
+                        {
+                            "label": "Roofing Speed",
+                            "description": "The speed at which roofing layers are printed.",
+                            "unit": "mm/s",
+                            "type": "float",
+                            "minimum_value": "0.1",
+                            "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
+                            "maximum_value_warning": "150",
+                            "default_value": 25,
+                            "value": "speed_topbottom",
+                            "limit_to_extruder": "roofing_extruder_nr",
+                            "settable_per_mesh": true,
+                            "enabled": "roofing_layer_count > 0 and top_layers > 0"
+                        },
                         "speed_topbottom":
                         {
                             "label": "Top/Bottom Speed",
@@ -2032,7 +2113,7 @@
                             "type": "float",
                             "unit": "mm/s",
                             "default_value": 20.0,
-                            "value": "speed_topbottom * 20 / 30",
+                            "value": "speed_roofing * 20 / 30",
                             "minimum_value": "0.001",
                             "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
                             "maximum_value_warning": "100",
@@ -2351,6 +2432,21 @@
                                 }
                             }
                         },
+                        "acceleration_roofing":
+                        {
+                            "label": "Roofing Acceleration",
+                            "description": "The acceleration with which roofing layers are printed.",
+                            "unit": "mm/s²",
+                            "type": "float",
+                            "minimum_value": "0.1",
+                            "minimum_value_warning": "100",
+                            "maximum_value_warning": "10000",
+                            "default_value": 3000,
+                            "value": "acceleration_topbottom",
+                            "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0",
+                            "limit_to_extruder": "roofing_extruder_nr",
+                            "settable_per_mesh": true
+                        },
                         "acceleration_topbottom":
                         {
                             "label": "Top/Bottom Acceleration",
@@ -2376,7 +2472,7 @@
                             "minimum_value_warning": "100",
                             "maximum_value_warning": "10000",
                             "default_value": 3000,
-                            "value": "acceleration_topbottom",
+                            "value": "acceleration_roofing",
                             "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled",
                             "limit_to_extruder": "top_bottom_extruder_nr",
                             "settable_per_mesh": true
@@ -2640,6 +2736,20 @@
                                 }
                             }
                         },
+                        "jerk_roofing":
+                        {
+                            "label": "Roofing Jerk",
+                            "description": "The maximum instantaneous velocity change with which roofing layers are printed.",
+                            "unit": "mm/s",
+                            "type": "float",
+                            "minimum_value": "0.1",
+                            "maximum_value_warning": "50",
+                            "default_value": 20,
+                            "value": "jerk_topbottom",
+                            "enabled": "resolveOrValue('jerk_enabled') and roofing_layer_count > 0 and top_layers > 0",
+                            "limit_to_extruder": "roofing_extruder_nr",
+                            "settable_per_mesh": true
+                        },
                         "jerk_topbottom":
                         {
                             "label": "Top/Bottom Jerk",
@@ -2663,7 +2773,7 @@
                             "minimum_value": "0.1",
                             "maximum_value_warning": "50",
                             "default_value": 20,
-                            "value": "jerk_topbottom",
+                            "value": "jerk_roofing",
                             "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled",
                             "limit_to_extruder": "top_bottom_extruder_nr",
                             "settable_per_mesh": true