From 6744bf192d625861ad2128f20c324e6757c3f5c1 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Mon, 1 May 2017 17:48:29 +0200 Subject: [PATCH 01/19] JSON feat: extruder_nr per feature type (CURA-3740) --- resources/definitions/fdmprinter.def.json | 63 +++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 40467ecec9..0aa7111eb9 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -821,6 +821,45 @@ "type": "category", "children": { + "wall_extruder_nr": + { + "label": "Wall Extruder", + "description": "The extruder train used for printing the walls. This is used in multi-extrusion.", + "type": "extruder", + "default_value": "0", + "value": "-1", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": true, + "settable_globally": true, + "children": + { + "wall_0_extruder_nr": + { + "label": "Outer Wall Extruder", + "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.", + "type": "extruder", + "default_value": "0", + "value": "wall_extruder_nr", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": true, + "settable_globally": true + }, + "wall_x_extruder_nr": + { + "label": "Inner Walls Extruder", + "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.", + "type": "extruder", + "default_value": "0", + "value": "wall_extruder_nr", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": true, + "settable_globally": true + } + } + }, "wall_thickness": { "label": "Wall Thickness", @@ -860,6 +899,18 @@ "maximum_value_warning": "machine_nozzle_size", "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": "extruder", + "default_value": "0", + "value": "-1", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": true, + "settable_globally": true + }, "top_bottom_thickness": { "label": "Top/Bottom Thickness", @@ -1101,6 +1152,18 @@ "type": "category", "children": { + "infill_extruder_nr": + { + "label": "Infill Extruder", + "description": "The extruder train used for printing infill. This is used in multi-extrusion.", + "type": "extruder", + "default_value": "0", + "value": "-1", + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": true, + "settable_globally": true + }, "infill_sparse_density": { "label": "Infill Density", From 202129dc4791875b562496d4712627acc1e8e05a Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 2 May 2017 17:18:02 +0200 Subject: [PATCH 02/19] JSON resolution settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0aa7111eb9..3409a681fb 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -654,6 +654,7 @@ "value": "line_width", "default_value": 0.4, "type": "float", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -668,6 +669,7 @@ "default_value": 0.4, "value": "wall_line_width", "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "wall_line_width_x": @@ -681,6 +683,7 @@ "default_value": 0.4, "value": "wall_line_width", "type": "float", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } @@ -696,6 +699,7 @@ "default_value": 0.4, "type": "float", "value": "line_width", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "infill_line_width": @@ -710,6 +714,7 @@ "type": "float", "value": "line_width", "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "skirt_brim_line_width": From 413030843769aaf6d2e24b0eef04c61243407008 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 2 May 2017 17:26:06 +0200 Subject: [PATCH 03/19] JSON infill settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 3409a681fb..e4eb4b94f6 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1178,6 +1178,7 @@ "default_value": 20, "minimum_value": "0", "maximum_value_warning": "100", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true, "children": { @@ -1191,6 +1192,7 @@ "minimum_value": "0", "minimum_value_warning": "infill_line_width", "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' else 1)))", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true } } @@ -1215,6 +1217,7 @@ "default_value": "grid", "enabled": "infill_sparse_density > 0", "value": "'lines' if infill_sparse_density > 25 else 'grid'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_angles": @@ -1225,6 +1228,7 @@ "default_value": "[ ]", "enabled": "infill_pattern != 'concentric' and infill_pattern != 'concentric_3d' and infill_pattern != 'cubicsubdiv'", "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "spaghetti_infill_enabled": @@ -1234,6 +1238,7 @@ "type": "bool", "default_value": false, "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "spaghetti_max_infill_angle": @@ -1247,6 +1252,7 @@ "maximum_value": "90", "maximum_value_warning": "45", "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "spaghetti_max_height": @@ -1259,6 +1265,7 @@ "minimum_value": "layer_height", "maximum_value_warning": "10.0", "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "spaghetti_inset": @@ -1271,6 +1278,7 @@ "minimum_value_warning": "0", "maximum_value_warning": "5.0", "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "spaghetti_flow": @@ -1283,6 +1291,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "sub_div_rad_mult": @@ -1296,6 +1305,7 @@ "minimum_value_warning": "100", "maximum_value_warning": "200", "enabled": "infill_sparse_density > 0 and infill_pattern == 'cubicsubdiv'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "sub_div_rad_add": @@ -1309,6 +1319,7 @@ "minimum_value_warning": "-1 * infill_line_distance", "maximum_value_warning": "5 * infill_line_distance", "enabled": "infill_sparse_density > 0 and infill_pattern == 'cubicsubdiv'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_overlap": @@ -1394,6 +1405,7 @@ "maximum_value": "resolveOrValue('layer_height') * (1.45 if spaghetti_infill_enabled else 8)", "value": "resolveOrValue('layer_height')", "enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "gradual_infill_steps": @@ -1406,6 +1418,7 @@ "maximum_value_warning": "4", "maximum_value": "(20 - math.log(infill_line_distance) / math.log(2)) if infill_line_distance > 0 and not spaghetti_infill_enabled else 0", "enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv' and not spaghetti_infill_enabled", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "gradual_infill_step_height": @@ -1419,6 +1432,7 @@ "minimum_value_warning": "3 * resolveOrValue('layer_height')", "maximum_value_warning": "100", "enabled": "infill_sparse_density > 0 and gradual_infill_steps > 0 and infill_pattern != 'cubicsubdiv'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_before_walls": From e63d9743de6d5ff530fe4d5520b5973918d4a3b5 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 2 May 2017 17:46:58 +0200 Subject: [PATCH 04/19] JSON shell settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index e4eb4b94f6..92a0e17622 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -875,6 +875,7 @@ "minimum_value_warning": "line_width", "maximum_value_warning": "10 * line_width", "type": "float", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -888,6 +889,7 @@ "maximum_value_warning": "10", "type": "int", "value": "1 if magic_spiralize else max(1, round((wall_thickness - wall_line_width_0) / wall_line_width_x) + 1) if wall_thickness != 0 else 0", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true } } @@ -902,6 +904,7 @@ "value": "machine_nozzle_size / 2", "minimum_value": "0", "maximum_value_warning": "machine_nozzle_size", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "top_bottom_extruder_nr": @@ -926,6 +929,7 @@ "minimum_value_warning": "0.6", "maximum_value": "machine_height", "type": "float", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { @@ -940,6 +944,7 @@ "maximum_value": "machine_height", "type": "float", "value": "top_bottom_thickness", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { @@ -953,6 +958,7 @@ "type": "int", "minimum_value_warning": "4", "value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } @@ -968,6 +974,7 @@ "type": "float", "value": "top_bottom_thickness", "maximum_value": "machine_height", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { @@ -980,6 +987,7 @@ "default_value": 6, "type": "int", "value": "999999 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } @@ -998,6 +1006,7 @@ "zigzag": "Zig Zag" }, "default_value": "lines", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "top_bottom_pattern_0": @@ -1013,6 +1022,7 @@ }, "default_value": "lines", "value": "top_bottom_pattern", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_angles": @@ -1022,6 +1032,7 @@ "type": "[int]", "default_value": "[ ]", "enabled": "top_bottom_pattern != 'concentric'", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "wall_0_inset": @@ -1034,6 +1045,7 @@ "value": "(machine_nozzle_size - wall_line_width_0) / 2 if (wall_line_width_0 < machine_nozzle_size and not outer_inset_first) else 0", "minimum_value_warning": "0", "maximum_value_warning": "machine_nozzle_size", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "outer_inset_first": @@ -1058,6 +1070,7 @@ "description": "Compensate the flow for parts of a wall being printed where there is already a wall in place.", "type": "bool", "default_value": true, + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -1068,6 +1081,7 @@ "type": "bool", "default_value": true, "value": "travel_compensate_overlapping_walls_enabled", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "travel_compensate_overlapping_walls_x_enabled": @@ -1077,6 +1091,7 @@ "type": "bool", "default_value": true, "value": "travel_compensate_overlapping_walls_enabled", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } @@ -1101,6 +1116,7 @@ "minimum_value_warning": "-1", "maximum_value_warning": "1", "default_value": 0, + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_type": @@ -1115,6 +1131,7 @@ "random": "Random" }, "default_value": "shortest", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_x": @@ -1126,6 +1143,7 @@ "default_value": 100.0, "value": "machine_width / 2", "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "z_seam_y": @@ -1137,6 +1155,7 @@ "default_value": 100.0, "value": "machine_depth * 3", "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "skin_no_small_gaps_heuristic": @@ -1145,6 +1164,7 @@ "description": "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting.", "type": "bool", "default_value": true, + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } From 11d6434b75e174abc94c6876036458680e6e0965 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 2 May 2017 17:53:06 +0200 Subject: [PATCH 05/19] JSON speed settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 92a0e17622..212437f460 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1967,6 +1967,7 @@ "default_value": 60, "value": "speed_print", "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infilll_extruder_nr", "settable_per_mesh": true }, "speed_wall": @@ -1980,6 +1981,7 @@ "maximum_value_warning": "150", "default_value": 30, "value": "speed_print / 2", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -1994,6 +1996,7 @@ "maximum_value_warning": "150", "default_value": 30, "value": "speed_wall", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "speed_wall_x": @@ -2007,6 +2010,7 @@ "maximum_value_warning": "150", "default_value": 60, "value": "speed_wall * 2", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } @@ -2022,6 +2026,7 @@ "maximum_value_warning": "150", "default_value": 30, "value": "speed_print / 2", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "speed_support": @@ -2284,6 +2289,7 @@ "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled') and infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "acceleration_wall": @@ -2298,6 +2304,7 @@ "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled')", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -2313,6 +2320,7 @@ "default_value": 3000, "value": "acceleration_wall", "enabled": "resolveOrValue('acceleration_enabled')", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "acceleration_wall_x": @@ -2327,6 +2335,7 @@ "default_value": 3000, "value": "acceleration_wall", "enabled": "resolveOrValue('acceleration_enabled')", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } @@ -2343,6 +2352,7 @@ "default_value": 3000, "value": "acceleration_print", "enabled": "resolveOrValue('acceleration_enabled')", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "acceleration_support": @@ -2558,6 +2568,7 @@ "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled') and infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "jerk_wall": @@ -2572,6 +2583,7 @@ "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled')", + "limit_to_extruder": "wall_extruder_nr", "settable_per_mesh": true, "children": { @@ -2587,6 +2599,7 @@ "default_value": 20, "value": "jerk_wall", "enabled": "resolveOrValue('jerk_enabled')", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "jerk_wall_x": @@ -2601,6 +2614,7 @@ "default_value": 20, "value": "jerk_wall", "enabled": "resolveOrValue('jerk_enabled')", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true } } @@ -2617,6 +2631,7 @@ "default_value": 20, "value": "jerk_print", "enabled": "resolveOrValue('jerk_enabled')", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "jerk_support": From 034f93debc05c56e3d872af8a77e6e8b9fa6e04b Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 2 May 2017 18:04:00 +0200 Subject: [PATCH 06/19] JSON remaining settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 212437f460..35b413412b 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4520,6 +4520,7 @@ "default_value": 0.15, "minimum_value": "0", "maximum_value_warning": "1.0", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "carve_multiple_volumes": @@ -4812,6 +4813,7 @@ "minimum_value": "0", "maximum_value_warning": "10", "type": "int", + "limit_to_extruder": "wall_x_extruder_nr", "settable_per_mesh": true }, "skin_alternate_rotation": @@ -4821,6 +4823,7 @@ "type": "bool", "default_value": false, "enabled": "top_bottom_pattern != 'concentric'", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "support_conical_enabled": @@ -4876,6 +4879,7 @@ "description": "Randomly jitter while printing the outer wall, so that the surface has a rough and fuzzy look.", "type": "bool", "default_value": false, + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "magic_fuzzy_skin_thickness": @@ -4888,6 +4892,7 @@ "minimum_value": "0.001", "maximum_value_warning": "wall_line_width_0", "enabled": "magic_fuzzy_skin_enabled", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "magic_fuzzy_skin_point_density": @@ -4902,6 +4907,7 @@ "maximum_value_warning": "10", "maximum_value": "2 / magic_fuzzy_skin_thickness", "enabled": "magic_fuzzy_skin_enabled", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true, "children": { @@ -4917,6 +4923,7 @@ "maximum_value_warning": "10", "value": "10000 if magic_fuzzy_skin_point_density == 0 else 1 / magic_fuzzy_skin_point_density", "enabled": "magic_fuzzy_skin_enabled", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true } } From 2ad8434c279f1b8f438eb6247d75eb0dfbbbcfa2 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 3 May 2017 11:23:14 +0200 Subject: [PATCH 07/19] JSON difficult settings limit_to_extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 35b413412b..6e0f3b6c39 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1054,6 +1054,7 @@ "description": "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs.", "type": "bool", "default_value": false, + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "alternate_extra_perimeter": @@ -1462,6 +1463,7 @@ "type": "bool", "default_value": true, "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "min_infill_area": @@ -1472,6 +1474,7 @@ "type": "float", "minimum_value": "0", "default_value": 0, + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "expand_skins_into_infill": From 27a8b59c80676fbaa55673c41b1cfa94c0805a0b Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 4 May 2017 17:34:11 +0200 Subject: [PATCH 08/19] WARNING: TO BE REMOVED! impossible settings limit_to_extruder CURA-3740 These settings inherently have to do with multiple features and so we should find a value function which depends on settings from the extruder trains corresponding to those features (wall, skin, infill). However, we haven't found those functions yet and we have to do research. Once we have found the formula these settings shouldn't depend on a single extruder any more and so we should remove the limit_to_extruder. --- resources/definitions/fdmprinter.def.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6e0f3b6c39..5ba6b85572 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1063,6 +1063,7 @@ "description": "Prints an extra wall at every other layer. This way infill gets caught between these extra walls, resulting in stronger prints.", "type": "bool", "default_value": false, + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "travel_compensate_overlapping_walls_enabled": @@ -1106,6 +1107,7 @@ "everywhere": "Everywhere" }, "default_value": "everywhere", + "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, "xy_offset": @@ -1483,6 +1485,7 @@ "description": "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin.", "type": "bool", "default_value": false, + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { @@ -1493,6 +1496,7 @@ "type": "bool", "default_value": false, "value": "expand_skins_into_infill", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "expand_lower_skins": @@ -1501,6 +1505,7 @@ "description": "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below.", "type": "bool", "default_value": false, + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } @@ -1515,6 +1520,7 @@ "value": "infill_line_distance * 1.4", "minimum_value": "0", "enabled": "expand_upper_skins or expand_lower_skins", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "max_skin_angle_for_expansion": @@ -1529,6 +1535,7 @@ "maximum_value": "90", "default_value": 20, "enabled": "expand_upper_skins or expand_lower_skins", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { @@ -1542,6 +1549,7 @@ "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))", "minimum_value": "0", "enabled": "expand_upper_skins or expand_lower_skins", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } } From 17e9e2ae53d8a7a884e4aa746eccd240fcdf56c3 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 4 May 2017 17:38:16 +0200 Subject: [PATCH 09/19] JSON limit_to_extruder becomes enabled (CURA-3740) Settings which govern the order of features shouldn't depend on any feature, because the order is overruled by the extruder order. --- resources/definitions/fdmprinter.def.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5ba6b85572..85ed3a3553 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1054,7 +1054,7 @@ "description": "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs.", "type": "bool", "default_value": false, - "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "wall_0_extruder_nr == wall_x_extruder_nr", "settable_per_mesh": true }, "alternate_extra_perimeter": @@ -1464,8 +1464,7 @@ "description": "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface.", "type": "bool", "default_value": true, - "enabled": "infill_sparse_density > 0", - "limit_to_extruder": "infill_extruder_nr", + "enabled": "infill_sparse_density > 0 and wall_extruder_nr == infill_extruder_nr", "settable_per_mesh": true }, "min_infill_area": From 8d6862be50754cbe44d0b4ae66d752340148e601 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 4 May 2017 17:45:03 +0200 Subject: [PATCH 10/19] JSON infill/skin value function (CURA-3740) value function is an initial try to get a better value function based on both feature types of walls and skin/infill --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 85ed3a3553..eb7dd72586 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1368,7 +1368,7 @@ "default_value": 0.04, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "infill_line_width * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", + "value": "0.5 * ( infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", "settable_per_mesh": true } @@ -1397,7 +1397,7 @@ "default_value": 0.02, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "skin_line_width * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", + "value": "0.5 * ( skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true } From 15367a68d7eb72343fbb800f3966a764bfd623c0 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 4 May 2017 17:45:45 +0200 Subject: [PATCH 11/19] WARNING: TO BE REMOVED! impossible settings limit_to_extruder: overlap percentage CURA-3740 These settings inherently have to do with multiple features and so we should find a value function which depends on settings from the extruder trains corresponding to those features (wall, skin, infill). However, we haven't found those functions yet and we have to do research. Once we have found the formula these settings shouldn't depend on a single extruder any more and so we should remove the limit_to_extruder. --- resources/definitions/fdmprinter.def.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index eb7dd72586..0c9ed059f9 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1356,6 +1356,7 @@ "minimum_value_warning": "-50", "maximum_value_warning": "100", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true, "children": { @@ -1385,6 +1386,7 @@ "maximum_value_warning": "100", "value": "5 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { From 486c6e16d05ce351c64a881e1dbe86d4c41fcf47 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 9 May 2017 14:56:20 +0200 Subject: [PATCH 12/19] fix: limit infill wipe to infill extruder (CURA-3740) --- resources/definitions/fdmprinter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0c9ed059f9..3c902e0b0c 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1416,6 +1416,7 @@ "minimum_value_warning": "0", "maximum_value_warning": "machine_nozzle_size", "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_sparse_thickness": From 56bf25cefaaccb2e60e6c79557f9c8b82dfbbeb5 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 9 May 2017 14:57:04 +0200 Subject: [PATCH 13/19] fix: typo in limit_to_extruder of Innfill Speed (CURA-3740) --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 3c902e0b0c..7b00708bcf 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1980,7 +1980,7 @@ "default_value": 60, "value": "speed_print", "enabled": "infill_sparse_density > 0", - "limit_to_extruder": "infilll_extruder_nr", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "speed_wall": From 0f97dd6fde0231e4dc73ec5b2039c2abd9281ba1 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 22 May 2017 16:56:54 +0200 Subject: [PATCH 14/19] Let global stack handle limit to extruder Contributes to issue CURA-3738. --- cura/ConvexHullDecorator.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cura/ConvexHullDecorator.py b/cura/ConvexHullDecorator.py index 44150cb76f..51b22755dd 100644 --- a/cura/ConvexHullDecorator.py +++ b/cura/ConvexHullDecorator.py @@ -298,7 +298,7 @@ class ConvexHullDecorator(SceneNodeDecorator): self._onChanged() ## Private convenience function to get a setting from the correct extruder (as defined by limit_to_extruder property). - def _getSettingProperty(self, setting_key, property="value"): + def _getSettingProperty(self, setting_key, property = "value"): per_mesh_stack = self._node.callDecoration("getStack") if per_mesh_stack: return per_mesh_stack.getProperty(setting_key, property) @@ -314,10 +314,8 @@ class ConvexHullDecorator(SceneNodeDecorator): extruder_stack_id = ExtruderManager.getInstance().extruderIds["0"] extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] return extruder_stack.getProperty(setting_key, property) - else: #Limit_to_extruder is set. Use that one. - extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)] - stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - return stack.getProperty(setting_key, property) + else: #Limit_to_extruder is set. The global stack handles this then. + return self._global_stack.getProperty(setting_key, property) ## Returns true if node is a descendant or the same as the root node. def __isDescendant(self, root, node): From 6887bcf232f493a9efdb21ad66e07b768809d7ab Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Mon, 22 May 2017 16:46:21 +0200 Subject: [PATCH 15/19] JSON fix: feature extruder settings now use optional_extruder type (CURA-3740) --- resources/definitions/fdmprinter.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index aba2d632df..4eedd69c67 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -831,7 +831,7 @@ { "label": "Wall Extruder", "description": "The extruder train used for printing the walls. This is used in multi-extrusion.", - "type": "extruder", + "type": "optional_extruder", "default_value": "0", "value": "-1", "settable_per_mesh": true, @@ -844,7 +844,7 @@ { "label": "Outer Wall Extruder", "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.", - "type": "extruder", + "type": "optional_extruder", "default_value": "0", "value": "wall_extruder_nr", "settable_per_mesh": true, @@ -856,7 +856,7 @@ { "label": "Inner Walls Extruder", "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.", - "type": "extruder", + "type": "optional_extruder", "default_value": "0", "value": "wall_extruder_nr", "settable_per_mesh": true, @@ -912,7 +912,7 @@ { "label": "Top/Bottom Extruder", "description": "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion.", - "type": "extruder", + "type": "optional_extruder", "default_value": "0", "value": "-1", "settable_per_mesh": true, @@ -1185,7 +1185,7 @@ { "label": "Infill Extruder", "description": "The extruder train used for printing infill. This is used in multi-extrusion.", - "type": "extruder", + "type": "optional_extruder", "default_value": "0", "value": "-1", "settable_per_mesh": true, From eab7ce232a30eea617ecb1de0b10605964478f10 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 23 May 2017 14:01:01 +0200 Subject: [PATCH 16/19] JSON fix: default feature extruder_nr = -1 (CURA-3740) --- resources/definitions/fdmprinter.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 4eedd69c67..aa68051a84 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -832,7 +832,7 @@ "label": "Wall Extruder", "description": "The extruder train used for printing the walls. This is used in multi-extrusion.", "type": "optional_extruder", - "default_value": "0", + "default_value": "-1", "value": "-1", "settable_per_mesh": true, "settable_per_extruder": false, @@ -845,7 +845,7 @@ "label": "Outer Wall Extruder", "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.", "type": "optional_extruder", - "default_value": "0", + "default_value": "-1", "value": "wall_extruder_nr", "settable_per_mesh": true, "settable_per_extruder": false, @@ -857,7 +857,7 @@ "label": "Inner Walls Extruder", "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.", "type": "optional_extruder", - "default_value": "0", + "default_value": "-1", "value": "wall_extruder_nr", "settable_per_mesh": true, "settable_per_extruder": false, @@ -913,7 +913,7 @@ "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": "0", + "default_value": "-1", "value": "-1", "settable_per_mesh": true, "settable_per_extruder": false, @@ -1186,7 +1186,7 @@ "label": "Infill Extruder", "description": "The extruder train used for printing infill. This is used in multi-extrusion.", "type": "optional_extruder", - "default_value": "0", + "default_value": "-1", "value": "-1", "settable_per_mesh": true, "settable_per_extruder": false, From 29c883d489c1ade8d00aa39d6a5f755a18fe9656 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 24 May 2017 09:36:05 +0200 Subject: [PATCH 17/19] Fix option_extruder case for per object settings panel CURA-3814 --- plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 3e78670e02..878eaddae5 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -94,6 +94,8 @@ Item { return settingComboBox case "extruder": return settingExtruder + case "optional_extruder": + return settingOptionalExtruder case "bool": return settingCheckBox case "str": @@ -342,6 +344,13 @@ Item { Cura.SettingExtruder { } } + Component + { + id: settingOptionalExtruder + + Cura.SettingOptionalExtruder { } + } + Component { id: settingCheckBox; From 64ae8bb595a2fc2b6a2581060ca7149a943df333 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 24 May 2017 10:17:11 +0200 Subject: [PATCH 18/19] Use global stack to evaluate limit_to_extruder value CURA-3738 Getting limit_to_extruder from definition in QML returns a SettingFunction which hasn't been evaluated. This causes the comparison not to be working. We change it to use the global stack to evaluate so we can get an actual extruder number string. --- resources/qml/Settings/SettingItem.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 65e8b7e1c1..7108d2a04c 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -140,7 +140,7 @@ Item { { id: linkedSettingIcon; - visible: Cura.MachineManager.activeStackId != Cura.MachineManager.activeMachineId && (!definition.settable_per_extruder || definition.limit_to_extruder != "-1") && base.showLinkedSettingIcon + visible: Cura.MachineManager.activeStackId != Cura.MachineManager.activeMachineId && (!definition.settable_per_extruder || globalPropertyProvider.properties.limit_to_extruder != "-1") && base.showLinkedSettingIcon height: parent.height; width: height; From baade194fdf5db9fe0533179a18abc35ddf0c257 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 29 May 2017 14:10:18 +0200 Subject: [PATCH 19/19] Change Extra Skin Wall Count to depend on top/bottom extruder The feature is meant to improve the quality of the skins. Whether this is needed should depend on the material of the skin rather than on the material of the inner wall, even though the feature itself is printed with the inner wall extruder. Contributes to issue CURA-3740. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index aa68051a84..95d8daa59e 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4867,7 +4867,7 @@ "minimum_value": "0", "maximum_value_warning": "10", "type": "int", - "limit_to_extruder": "wall_x_extruder_nr", + "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, "skin_alternate_rotation":