From 6e5e3db627e6303cb1138d0e5fb27b53f4de565b Mon Sep 17 00:00:00 2001 From: just-trey Date: Sat, 22 Oct 2022 19:56:51 -0400 Subject: [PATCH 01/26] Add AnkerMake M5 Profile --- resources/definitions/ankermake_m5.def.json | 161 ++++ .../ankermake_m5_extruder_0.def.json | 15 + resources/images/ankermake_m5.png | Bin 0 -> 116167 bytes resources/meshes/ankermake_m5_platform.obj | 745 ++++++++++++++++++ .../ankermake_m5/ankermake_m5_draft.inst.cfg | 50 ++ .../ankermake_m5/ankermake_m5_fine.inst.cfg | 53 ++ .../ankermake_m5/ankermake_m5_normal.inst.cfg | 53 ++ 7 files changed, 1077 insertions(+) create mode 100644 resources/definitions/ankermake_m5.def.json create mode 100644 resources/extruders/ankermake_m5_extruder_0.def.json create mode 100644 resources/images/ankermake_m5.png create mode 100644 resources/meshes/ankermake_m5_platform.obj create mode 100644 resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg create mode 100644 resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg create mode 100644 resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json new file mode 100644 index 0000000000..781d716761 --- /dev/null +++ b/resources/definitions/ankermake_m5.def.json @@ -0,0 +1,161 @@ +{ + "name": "AnkerMake M5", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "just-trey", + "manufacturer": "AnkerMake", + "platform_texture": "ankermake_m5.png", + "platform": "ankermake_m5_platform.obj", + "has_machine_quality": true, + "preferred_quality_type": "normal", + "file_formats": "text/x-gcode", + "machine_extruder_trains": { + "0": "ankermake_m5_extruder_0" + }, + "preferred_material": "generic_pla", + "exclude_materials": [ + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "generic_abs", + "generic_bam", + "generic_cffcpe", + "generic_cffpa", + "generic_cpe", + "generic_cpe_plus", + "generic_gffcpe", + "generic_gffpa", + "generic_hips", + "generic_nylon", + "generic_pc", + "generic_petg", + "generic_pla", + "generic_pp", + "generic_pva", + "generic_tough_pla", + "generic_tpu", + "imade3d_petg_green", + "imade3d_petg_pink", + "imade3d_pla_green", + "imade3d_pla_pink", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "structur3d_dap100silicone", + "tizyx_abs", + "tizyx_pla", + "tizyx_pla_bois", + "ultimaker_abs_black", + "ultimaker_abs_blue", + "ultimaker_abs_green", + "ultimaker_abs_grey", + "ultimaker_abs_orange", + "ultimaker_abs_pearl-gold", + "ultimaker_abs_red", + "ultimaker_abs_silver-metallic", + "ultimaker_abs_white", + "ultimaker_abs_yellow", + "ultimaker_bam", + "ultimaker_cpe_black", + "ultimaker_cpe_blue", + "ultimaker_cpe_dark-grey", + "ultimaker_cpe_green", + "ultimaker_cpe_light-grey", + "ultimaker_cpe_plus_black", + "ultimaker_cpe_plus_transparent", + "ultimaker_cpe_plus_white", + "ultimaker_cpe_red", + "ultimaker_cpe_transparent", + "ultimaker_cpe_white", + "ultimaker_cpe_yellow", + "ultimaker_nylon_black", + "ultimaker_nylon_transparent", + "ultimaker_pc_black", + "ultimaker_pc_transparent", + "ultimaker_pc_white", + "ultimaker_pla_black", + "ultimaker_pla_blue", + "ultimaker_pla_green", + "ultimaker_pla_magenta", + "ultimaker_pla_orange", + "ultimaker_pla_pearl-white", + "ultimaker_pla_red", + "ultimaker_pla_silver-metallic", + "ultimaker_pla_transparent", + "ultimaker_pla_white", + "ultimaker_pla_yellow", + "ultimaker_pp_transparent", + "ultimaker_pva", + "ultimaker_tough_pla_black", + "ultimaker_tough_pla_green", + "ultimaker_tough_pla_red", + "ultimaker_tough_pla_white", + "ultimaker_tpu_black", + "ultimaker_tpu_blue", + "ultimaker_tpu_red", + "ultimaker_tpu_white", + "verbatim_bvoh_175", + "zyyx_pro_flex", + "zyyx_pro_pla" + ] + }, + + "overrides": { + "machine_name": { "default_value": "AnkerMake M5" }, + "machine_width": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 235 }, + "machine_heated_bed": { "default_value": true }, + "material_diameter": { "default_value": 1.75 }, + "jerk_enabled": { "value": true }, + "jerk_infill": { "value": 30 }, + "jerk_print": { "value": 15 }, + "jerk_travel": { "value": 15 }, + "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, + "speed_infill": { "maximum_value_warning": 300 }, + "speed_topbottom": { "value": 150.0 }, + "speed_travel_layer_0": { "value": 250.0 }, + "speed_travel": { "value": "speed_travel_layer_0" }, + "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, + "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, + "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, + "material_flow_layer_0": { "value": 120 }, + "skin_monotonic": { "value": true }, + "cool_min_layer_time": { "value": 6 }, + "cool_min_speed": { "value": 30 }, + "retraction_amount": { "default_value": 1.5 }, + "retraction_speed": { "default_value": 70 }, + "acceleration_enabled": { "value": "False" }, + "acceleration_print": { "value": "2500" }, + "acceleration_travel": { "value": "acceleration_print" }, + "adhesion_type": { "default_value": "skirt" }, + "raft_margin": { "default_value": 5 }, + "raft_airgap": { "default_value": 0.25 }, + "brim_width": { "default_value": 5 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + }, + "gantry_height": { "value": 25 } + } +} diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json new file mode 100644 index 0000000000..4baf1f765d --- /dev/null +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "ankermake_m5", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/images/ankermake_m5.png b/resources/images/ankermake_m5.png new file mode 100644 index 0000000000000000000000000000000000000000..aec9697c9ebc562a947fc4e40bcef31fc2bc6b38 GIT binary patch literal 116167 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 z

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 W_%Z|K_4Yx)pR$6we6_4a*#7~YhoQ{? literal 0 HcmV?d00001 diff --git a/resources/meshes/ankermake_m5_platform.obj b/resources/meshes/ankermake_m5_platform.obj new file mode 100644 index 0000000000..d84dccafd6 --- /dev/null +++ b/resources/meshes/ankermake_m5_platform.obj @@ -0,0 +1,745 @@ +# Exported from 3D Builder +mtllib D:\Documents\Projects\AnkerMake-M5-Profile\5.1\images\AM-M5-bed.mtl + +o Object.1 +v 121.092972 123.154205 -0.102764 +v 119.840958 123.932068 -0.102778 +v 119.840958 123.932068 0.097220 +v 121.092972 123.154205 0.097234 +v 78.657051 -126.525543 0.102253 +v 78.012062 -126.955132 0.102262 +v 78.012062 -126.955139 -0.097736 +v 78.657051 -126.525551 -0.097745 +v -75.704933 -141.014282 -0.097276 +v -75.352928 -141.851379 -0.097260 +v -75.352928 -141.851364 0.102738 +v -75.704933 -141.014282 0.102722 +v -74.881927 -142.616196 -0.097246 +v -74.881927 -142.616180 0.102752 +v 116.994965 124.874573 -0.102794 +v 118.468956 124.512222 -0.102788 +v 115.440956 125.000031 -0.102794 +v 122.205963 122.196655 -0.102746 +v 123.159973 121.079498 -0.102725 +v 123.935974 119.821854 -0.102701 +v 124.513977 118.444763 -0.102674 +v 124.874969 116.966278 -0.102645 +v 124.999969 115.405518 -0.102615 +v 79.364059 -126.202339 0.102246 +v 79.364059 -126.202347 -0.097752 +v -76.946938 -128.027161 0.102464 +v -76.946938 -128.027161 -0.097534 +v -76.547928 -128.674576 -0.097521 +v -76.547928 -128.674561 0.102477 +v 80.123062 -125.999588 0.102241 +v 80.123062 -125.999596 -0.097757 +v 80.924057 -125.929337 -0.097759 +v 80.924057 -125.929329 0.102239 +v 125.000061 -116.334778 -0.098002 +v 124.875061 -117.895561 -0.097971 +v -115.441032 124.999939 -0.102525 +v 75.924065 -140.114868 -0.097471 +v 75.924065 -140.114868 0.102527 +v 75.705070 -141.014221 0.102545 +v 75.705070 -141.014221 -0.097453 +v 74.301064 -143.294632 -0.097406 +v 74.301064 -143.294632 0.102592 +v 73.625069 -143.876816 -0.097394 +v 118.468956 124.512222 0.097210 +v 74.881050 -142.616135 -0.097420 +v 74.881050 -142.616135 0.102578 +v 116.994965 124.874573 0.097204 +v 75.353065 -141.851318 -0.097436 +v 75.353065 -141.851318 0.102562 +v 115.440956 125.000031 0.097204 +v 115.441055 -125.929314 0.102198 +v 115.441055 -125.929321 -0.097800 +v 116.995064 -125.803848 -0.097804 +v 116.995064 -125.803841 0.102194 +v 118.469055 -125.441521 -0.097813 +v 118.469055 -125.441513 0.102185 +v -124.999947 -116.334877 -0.097710 +v -125.000031 115.405426 0.097675 +v -125.000031 115.405418 -0.102323 +v 119.841057 -124.861359 -0.097826 +v 119.841057 -124.861351 0.102172 +v 121.093071 -124.082481 -0.097843 +v 121.093071 -124.082474 0.102155 +v -124.874954 -117.895653 0.102319 +v -124.513947 -119.374130 0.102348 +v -124.999947 -116.334869 0.102288 +v 124.514069 -119.374039 -0.097941 +v 123.936066 -120.751137 -0.097913 +v 123.160065 -122.008789 -0.097887 +v 122.206055 -123.124947 -0.097863 +v 122.206055 -123.124939 0.102135 +v 74.000061 -122.918182 -0.097811 +v -72.999939 -122.918236 -0.097640 +v 123.160065 -122.008789 0.102111 +v 123.936066 -120.751137 0.102085 +v -116.996040 124.874481 0.097477 +v -116.996040 124.874481 -0.102521 +v -118.469032 124.512131 -0.102512 +v -118.469032 124.512131 0.097486 +v 124.514069 -119.374039 0.102057 +v -119.841042 123.931976 -0.102499 +v -119.841042 123.931976 0.097499 +v 124.875061 -117.895561 0.102027 +v -121.094032 123.154114 -0.102482 +v -121.094032 123.154114 0.097516 +v 125.000061 -116.334778 0.101996 +v -122.207047 122.196564 -0.102462 +v -122.207047 122.196564 0.097537 +v -123.161026 121.079407 -0.102438 +v -123.161026 121.079407 0.097560 +v -123.936020 119.821762 -0.102412 +v -123.936020 119.821762 0.097586 +v 76.250061 -129.496536 -0.097683 +v 76.548050 -128.762833 -0.097698 +v 76.948059 -128.086334 -0.097712 +v -124.514038 118.444664 -0.102384 +v -124.514038 118.444672 0.097614 +v -124.875038 116.966179 -0.102354 +v -124.875038 116.966187 0.097644 +v 77.439056 -127.480080 -0.097724 +v 76.000069 -139.166367 0.102508 +v 76.000069 -139.166367 -0.097490 +v -115.441032 124.999939 0.097473 +v 76.000061 -131.083420 0.102347 +v 76.000061 -131.083420 -0.097651 +v -80.121941 -126.071922 0.102429 +v -80.922943 -126.007690 0.102429 +v -80.922943 -126.007698 -0.097569 +v -80.121941 -126.071930 -0.097569 +v 124.874969 116.966278 0.097353 +v 124.999969 115.405518 0.097383 +v 76.064056 -130.274429 0.102331 +v 76.064056 -130.274445 -0.097667 +v 124.513977 118.444763 0.097324 +v -79.363937 -126.258606 0.102432 +v -79.363937 -126.258614 -0.097566 +v 74.000069 -142.992523 -0.097412 +v 123.935974 119.821869 0.097297 +v 76.250061 -129.496536 0.102315 +v -78.656929 -126.557716 0.102437 +v -78.656929 -126.557724 -0.097561 +v 123.159973 121.079514 0.097273 +v 76.548050 -128.762817 0.102300 +v 122.205963 122.196655 0.097252 +v -78.011940 -126.959198 0.102444 +v -78.011940 -126.959206 -0.097554 +v 76.948059 -128.086319 0.102286 +v -77.438934 -127.452026 0.102454 +v -77.438934 -127.452034 -0.097544 +v 77.439056 -127.480072 0.102274 +v -74.301933 -143.294693 -0.097233 +v -74.301933 -143.294678 0.102765 +v -73.624931 -143.876877 -0.097222 +v -73.624931 -143.876862 0.102776 +v -88.022942 -125.929398 -0.097562 +v -121.093933 -124.082565 0.102437 +v -76.249939 -129.384201 -0.097507 +v -88.022942 -126.007698 -0.097561 +v -76.063942 -130.146011 -0.097492 +v -75.999939 -130.948990 -0.097476 +v -72.999931 -142.992584 -0.097240 +v 71.133072 -144.923676 -0.097370 +v 72.029060 -144.703873 -0.097375 +v 70.188072 -144.999969 -0.097367 +v 72.863068 -144.350555 -0.097383 +v -70.187927 -145.000031 -0.097204 +v -72.028931 -144.703934 -0.097207 +v -71.133934 -144.923737 -0.097204 +v -72.863922 -144.350616 -0.097213 +v -75.999931 -139.166428 -0.097313 +v -75.923935 -140.114929 -0.097294 +v 70.188072 -144.999969 0.102631 +v -70.187927 -145.000015 0.102794 +v 71.133072 -144.923676 0.102628 +v 72.029060 -144.703873 0.102623 +v 72.863068 -144.350555 0.102615 +v 73.625069 -143.876816 0.102604 +v -72.863922 -144.350601 0.102785 +v -72.028931 -144.703918 0.102791 +v -71.133934 -144.923721 0.102794 +v -115.440933 -125.929413 -0.097530 +v -116.995941 -125.803940 -0.097531 +v -118.468933 -125.441612 -0.097537 +v -119.840942 -124.861450 -0.097547 +v -121.093933 -124.082573 -0.097561 +v -122.206947 -123.125038 -0.097578 +v -123.160934 -122.008888 -0.097599 +v -123.935928 -120.751236 -0.097624 +v -124.513947 -119.374138 -0.097650 +v -124.874954 -117.895660 -0.097679 +v -76.249939 -129.384186 0.102491 +v -76.063942 -130.145996 0.102506 +v -75.999939 -130.948975 0.102522 +v -75.999931 -139.166428 0.102685 +v -88.022942 -125.929398 0.102436 +v -88.022942 -126.007698 0.102437 +v -123.935928 -120.751228 0.102374 +v -123.160934 -122.008881 0.102399 +v -122.206947 -123.125031 0.102420 +v -119.840942 -124.861443 0.102451 +v -118.468933 -125.441605 0.102461 +v -116.995941 -125.803932 0.102467 +v -115.440933 -125.929405 0.102468 +v -75.923935 -140.114929 0.102704 + +usemtl Material.001_0 +f 1 2 3 +f 1 3 4 +f 18 1 4 +f 18 4 124 +f 19 18 124 +f 19 124 122 +f 20 19 122 +f 20 122 118 +f 21 20 118 +f 21 118 114 +f 22 21 114 +f 22 114 110 +f 23 22 110 +f 23 110 111 +f 23 111 34 +f 17 36 50 +f 15 17 50 +f 15 50 47 +f 16 15 47 +f 16 47 44 +f 2 16 44 +f 70 74 71 +f 62 70 71 +f 69 68 75 +f 69 75 74 +f 35 86 83 +f 67 35 83 +f 35 34 86 +f 67 83 80 +f 68 67 80 +f 68 80 75 +f 60 62 63 +f 60 63 61 +f 55 60 61 +f 55 61 56 +f 53 55 56 +f 53 56 54 +f 51 53 54 +f 51 33 52 +f 32 52 33 +f 32 33 30 +f 32 30 31 +f 120 116 121 +f 125 120 121 +f 125 121 126 +f 128 125 126 +f 128 126 129 +f 128 129 27 +f 128 27 26 +f 130 127 95 +f 130 95 100 +f 6 130 100 +f 6 100 7 +f 5 6 7 +f 5 7 8 +f 24 5 8 +f 24 8 25 +f 30 24 25 +f 106 107 108 +f 106 108 109 +f 115 106 109 +f 115 109 116 +f 76 77 78 +f 76 78 79 +f 91 97 92 +f 89 91 92 +f 96 98 99 +f 96 99 97 +f 165 136 179 +f 165 179 166 +f 168 167 178 +f 168 178 177 +f 169 168 177 +f 169 177 65 +f 170 169 65 +f 170 65 64 +f 66 170 64 +f 66 57 170 +f 58 57 66 +f 57 58 59 +f 163 180 164 +f 164 180 136 +f 163 181 180 +f 162 181 163 +f 162 182 181 +f 175 183 135 +f 175 135 138 +f 175 138 176 +f 107 176 138 +f 161 183 182 +f 161 182 162 +f 161 135 183 +f 98 59 58 +f 167 166 179 +f 164 136 165 +f 167 179 178 +f 98 58 99 +f 87 89 90 +f 87 90 88 +f 84 87 88 +f 84 88 85 +f 81 84 85 +f 81 85 82 +f 78 81 82 +f 91 96 97 +f 89 92 90 +f 36 76 103 +f 78 82 79 +f 108 107 138 +f 123 93 94 +f 127 123 94 +f 123 119 93 +f 119 113 93 +f 119 112 113 +f 112 105 113 +f 104 102 105 +f 104 101 102 +f 102 101 37 +f 38 37 101 +f 37 38 39 +f 37 39 40 +f 45 42 41 +f 41 42 43 +f 43 42 157 +f 43 157 156 +f 43 156 145 +f 143 154 142 +f 142 154 152 +f 142 152 144 +f 144 152 146 +f 172 139 140 +f 172 140 173 +f 39 49 48 +f 48 49 46 +f 146 153 160 +f 146 160 148 +f 148 160 159 +f 148 159 147 +f 147 158 149 +f 149 158 133 +f 134 133 158 +f 13 132 14 +f 10 13 14 +f 133 132 131 +f 9 10 11 +f 9 11 12 +f 151 9 12 +f 151 12 184 +f 151 184 174 +f 150 151 174 +f 140 150 174 +f 13 131 132 +f 10 14 11 +f 133 134 132 +f 147 159 158 +f 140 174 173 +f 171 139 172 +f 171 137 139 +f 29 137 171 +f 29 28 137 +f 26 28 29 +f 146 152 153 +f 143 155 154 +f 145 155 143 +f 145 156 155 +f 45 46 42 +f 48 46 45 +f 39 48 40 +f 112 104 105 +f 127 94 95 +f 26 27 28 +f 120 115 116 +f 36 77 76 +f 30 25 31 +f 51 52 53 +f 70 69 74 +f 62 71 63 +f 103 50 36 +f 86 34 111 +f 2 44 3 + +vt -0.000000 0.964465 +vt 0.000000 0.106167 +vt 0.961764 1.000000 +vt 0.000500 0.100387 +vt 0.001944 0.094911 +vt 0.004256 0.089810 +vt 0.007360 0.085152 +vt 0.011176 0.081019 +vt 0.015628 0.077472 +vt 0.020636 0.074587 +vt 0.026124 0.072439 +vt 0.032020 0.071097 +vt 0.038236 0.070632 +vt 0.176304 0.070632 +vt 0.204000 0.081784 +vt 0.179508 0.070372 +vt 0.182544 0.069621 +vt 0.185372 0.068424 +vt 0.187952 0.066833 +vt 0.190244 0.064888 +vt 0.192208 0.062643 +vt 0.193808 0.060138 +vt 0.195000 0.057420 +vt 0.195744 0.054539 +vt 0.196000 0.051543 +vt 0.204000 0.007435 +vt 0.196000 0.021606 +vt 0.196304 0.018093 +vt 0.197180 0.014762 +vt 0.198588 0.011662 +vt 0.200476 0.008829 +vt 0.202796 0.006316 +vt 0.205500 0.004160 +vt 0.208548 0.002405 +vt 0.211884 0.001097 +vt 0.215468 0.000283 +vt 0.219248 0.000000 +vt 0.792000 0.007435 +vt 0.780752 0.000000 +vt 0.784536 0.000283 +vt 0.788116 0.001097 +vt 0.791456 0.002405 +vt 0.794500 0.004160 +vt 0.797208 0.006316 +vt 0.799528 0.008829 +vt 0.801412 0.011662 +vt 0.802820 0.014762 +vt 0.803696 0.018093 +vt 0.804000 0.021606 +vt 0.804000 0.052041 +vt 0.792000 0.081784 +vt 0.967984 0.999535 +vt 0.814628 0.068305 +vt 0.812048 0.066818 +vt 0.809756 0.064993 +vt 0.807788 0.062863 +vt 0.806192 0.060465 +vt 0.805000 0.057837 +vt 0.804256 0.055015 +vt 0.817456 0.069413 +vt 0.820488 0.070104 +vt 0.823692 0.070342 +vt 0.852092 0.070632 +vt 0.852092 0.070342 +vt 0.973876 0.998193 +vt 0.979364 0.996045 +vt 0.984376 0.993164 +vt 0.988828 0.989617 +vt 0.992644 0.985480 +vt 0.995744 0.980822 +vt 0.998056 0.975721 +vt 0.999500 0.970245 +vt 1.000000 0.964465 +vt 1.000000 0.106167 +vt 0.961764 0.070632 +vt 0.967984 0.071097 +vt 0.973876 0.072439 +vt 0.979364 0.074587 +vt 0.984376 0.077472 +vt 0.988828 0.081019 +vt 0.992644 0.085152 +vt 0.995744 0.089810 +vt 0.998056 0.094911 +vt 0.999500 0.100387 +vt 0.038236 1.000000 +vt 0.000500 0.970245 +vt 0.001944 0.975721 +vt 0.004256 0.980821 +vt 0.007360 0.985479 +vt 0.011176 0.989617 +vt 0.015628 0.993164 +vt 0.020636 0.996045 +vt 0.026124 0.998193 +vt 0.032020 0.999535 + +usemtl Mat_0 +f 23/1 34/2 36/3 +f 17/85 23/1 36/3 +f 16/93 2/92 17/85 +f 62/9 36/3 70/8 +f 70/8 36/3 69/7 +f 69/7 36/3 68/6 +f 67/5 36/3 35/4 +f 68/6 36/3 67/5 +f 60/10 36/3 62/9 +f 32/14 31/16 72/15 +f 32/14 72/15 36/3 +f 72/15 73/51 36/3 +f 77/52 36/3 73/51 +f 77/52 73/51 121/53 +f 116/60 77/52 121/53 +f 77/52 109/61 108/62 +f 108/62 135/63 77/52 +f 77/52 135/63 78/65 +f 89/69 135/63 91/70 +f 91/70 135/63 96/71 +f 96/71 135/63 98/72 +f 57/74 165/79 166/80 +f 57/74 166/80 167/81 +f 168/82 57/74 167/81 +f 57/74 59/73 135/63 +f 135/63 161/75 57/74 +f 161/75 162/76 57/74 +f 162/76 163/77 57/74 +f 57/74 163/77 164/78 +f 170/84 57/74 169/83 +f 169/83 57/74 168/82 +f 57/74 164/78 165/79 +f 59/73 98/72 135/63 +f 87/68 135/63 89/69 +f 81/66 135/63 84/67 +f 84/67 135/63 87/68 +f 78/65 135/63 81/66 +f 138/64 135/63 108/62 +f 25/17 8/18 72/15 +f 7/19 72/15 8/18 +f 7/19 100/20 72/15 +f 95/21 72/15 100/20 +f 95/21 94/22 72/15 +f 93/23 72/15 94/22 +f 105/25 72/15 113/24 +f 72/15 105/25 117/26 +f 102/27 117/26 105/25 +f 117/26 37/28 40/29 +f 117/26 40/29 48/30 +f 117/26 48/30 45/31 +f 41/32 117/26 45/31 +f 43/33 145/34 117/26 +f 145/34 143/35 117/26 +f 142/36 117/26 143/35 +f 146/39 141/38 144/37 +f 117/26 144/37 141/38 +f 141/38 73/51 117/26 +f 141/38 140/50 73/51 +f 139/59 73/51 140/50 +f 147/41 141/38 148/40 +f 149/42 141/38 147/41 +f 10/46 141/38 13/45 +f 131/44 13/45 141/38 +f 133/43 131/44 141/38 +f 9/47 141/38 10/46 +f 150/49 141/38 151/48 +f 151/48 141/38 9/47 +f 133/43 141/38 149/42 +f 137/58 28/57 73/51 +f 28/57 27/56 73/51 +f 139/59 137/58 73/51 +f 140/50 141/38 150/49 +f 146/39 148/40 141/38 +f 144/37 117/26 142/36 +f 43/33 117/26 41/32 +f 117/26 102/27 37/28 +f 93/23 113/24 72/15 +f 27/56 129/55 73/51 +f 129/55 126/54 73/51 +f 77/52 116/60 109/61 +f 126/54 121/53 73/51 +f 72/15 117/26 73/51 +f 25/17 72/15 31/16 +f 52/13 32/14 36/3 +f 53/12 52/13 36/3 +f 55/11 53/12 36/3 +f 55/11 36/3 60/10 +f 15/94 16/93 17/85 +f 34/2 35/4 36/3 +f 17/85 22/86 23/1 +f 17/85 21/87 22/86 +f 17/85 20/88 21/87 +f 17/85 19/89 20/88 +f 17/85 18/90 19/89 +f 17/85 1/91 18/90 +f 2/92 1/91 17/85 + +vt 0.992640 0.085152 +vt 0.038236 1.000000 +vt 0.015624 0.077472 +vt 0.995744 0.980822 +vt 0.979364 0.996045 +vt 0.967980 0.999535 +vt 0.973876 0.998193 +vt 0.961764 1.000000 +vt 0.988824 0.989617 +vt 0.992640 0.985480 +vt 0.984372 0.993164 +vt 1.000000 0.106167 +vt 0.998056 0.094911 +vt 0.995744 0.089810 +vt 0.999500 0.100387 +vt 0.999500 0.970245 +vt 1.000000 0.964465 +vt 0.998056 0.975721 +vt 0.001944 0.975721 +vt 0.015624 0.993164 +vt 0.026124 0.998193 +vt 0.032016 0.999535 +vt 0.020636 0.996045 +vt 0.007356 0.985479 +vt 0.011172 0.989617 +vt 0.004256 0.980821 +vt 0.001944 0.094911 +vt -0.000000 0.964465 +vt 0.000500 0.970245 +vt 0.000000 0.106167 +vt 0.000500 0.100387 +vt 0.007356 0.085152 +vt 0.004256 0.089810 +vt 0.011172 0.081019 +vt 0.147908 0.070632 +vt 0.026124 0.072439 +vt 0.020636 0.074587 +vt 0.032016 0.071097 +vt 0.038236 0.070632 +vt 0.973876 0.072439 +vt 0.823696 0.070632 +vt 0.176308 0.070342 +vt 0.147908 0.070342 +vt 0.820492 0.070372 +vt 0.179512 0.070104 +vt 0.817456 0.069621 +vt 0.182544 0.069413 +vt 0.814628 0.068424 +vt 0.185372 0.068305 +vt 0.812048 0.066833 +vt 0.187952 0.066818 +vt 0.809756 0.064889 +vt 0.190244 0.064993 +vt 0.807792 0.062643 +vt 0.192212 0.062862 +vt 0.806192 0.060138 +vt 0.193808 0.060465 +vt 0.805000 0.057420 +vt 0.195000 0.057836 +vt 0.804256 0.054539 +vt 0.195744 0.055015 +vt 0.794500 0.004160 +vt 0.196000 0.052041 +vt 0.208544 0.002405 +vt 0.198588 0.011662 +vt 0.202792 0.006316 +vt 0.205500 0.004160 +vt 0.200472 0.008829 +vt 0.196304 0.018093 +vt 0.196000 0.021606 +vt 0.197180 0.014762 +vt 0.780752 0.000000 +vt 0.215464 0.000283 +vt 0.211884 0.001097 +vt 0.219248 0.000000 +vt 0.788116 0.001097 +vt 0.784532 0.000283 +vt 0.791452 0.002405 +vt 0.804000 0.051543 +vt 0.802820 0.014762 +vt 0.799524 0.008829 +vt 0.797204 0.006316 +vt 0.801412 0.011662 +vt 0.804000 0.021606 +vt 0.803696 0.018093 +vt 0.967980 0.071097 +vt 0.961764 0.070632 +vt 0.984372 0.077472 +vt 0.979364 0.074587 +vt 0.988824 0.081019 + +usemtl Mat_0 +f 3/99 44/101 47/100 +f 3/99 47/100 103/96 +f 118/98 3/99 103/96 +f 74/95 118/98 103/96 +f 74/95 103/96 136/97 +f 136/97 175/129 74/95 +f 175/129 56/134 74/95 +f 56/134 63/182 74/95 +f 63/182 71/184 74/95 +f 74/95 75/108 80/107 +f 74/95 80/107 86/106 +f 80/107 83/109 86/106 +f 33/135 51/181 54/180 +f 128/147 26/149 127/148 +f 128/147 127/148 130/146 +f 106/139 24/140 30/138 +f 107/136 106/139 30/138 +f 103/96 76/116 79/115 +f 103/96 79/115 85/114 +f 103/96 85/114 97/113 +f 85/114 90/118 97/113 +f 90/118 92/120 97/113 +f 97/113 99/123 58/122 +f 97/113 58/122 65/121 +f 97/113 65/121 136/97 +f 65/121 178/126 136/97 +f 178/126 179/128 136/97 +f 136/97 180/131 181/130 +f 181/130 182/132 175/129 +f 182/132 183/133 175/129 +f 175/129 176/137 107/136 +f 175/129 107/136 33/135 +f 64/125 65/121 66/124 +f 65/121 177/127 178/126 +f 58/122 66/124 65/121 +f 85/114 88/119 90/118 +f 79/115 82/117 85/114 +f 106/139 115/141 24/140 +f 115/141 5/142 24/140 +f 115/141 120/143 5/142 +f 120/143 6/144 5/142 +f 125/145 130/146 6/144 +f 39/174 38/179 101/178 +f 172/155 173/157 157/156 +f 172/155 157/156 112/154 +f 171/153 172/155 112/154 +f 157/156 104/173 112/154 +f 157/156 39/174 104/173 +f 157/156 46/175 39/174 +f 46/175 49/177 39/174 +f 173/157 158/158 157/156 +f 158/158 152/166 157/156 +f 152/166 155/170 157/156 +f 158/158 160/167 152/166 +f 160/167 153/169 152/166 +f 132/160 134/161 158/158 +f 11/159 132/160 158/158 +f 11/159 14/162 132/160 +f 173/157 174/164 184/163 +f 173/157 184/163 11/159 +f 184/163 12/165 11/159 +f 158/158 159/168 160/167 +f 173/157 11/159 158/158 +f 29/151 171/153 119/152 +f 26/149 29/151 123/150 +f 152/166 154/171 155/170 +f 155/170 156/172 157/156 +f 157/156 42/176 46/175 +f 39/174 101/178 104/173 +f 171/153 112/154 119/152 +f 29/151 119/152 123/150 +f 26/149 123/150 127/148 +f 125/145 128/147 130/146 +f 120/143 125/145 6/144 +f 107/136 30/138 33/135 +f 33/135 54/180 56/134 +f 56/134 61/183 63/182 +f 175/129 33/135 56/134 +f 136/97 181/130 175/129 +f 103/96 97/113 136/97 +f 74/95 86/106 118/98 +f 86/106 110/110 118/98 +f 118/98 124/103 3/99 +f 47/100 50/102 103/96 +f 86/106 111/111 110/110 +f 110/110 114/112 118/98 +f 118/98 122/104 124/103 +f 124/103 4/105 3/99 + diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg new file mode 100644 index 0000000000..6b69f5681a --- /dev/null +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = ankermake_m5 +name = Draft +version = 4 + +[metadata] +global_quality = True +quality_type = draft +setting_version = 17 +type = quality +weight = -2 + +[values] +adhesion_type = skirt +bridge_settings_enabled = False +brim_width = 10 +cool_min_layer_time = 6 +fill_outline_gaps = False +hole_xy_offset = 0.15 +infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) +infill_material_flow = 100 +infill_overlap = 30 +infill_sparse_density = 15 +initial_layer_line_width_factor = 80 +jerk_enabled = False +layer_height = 0.28 +layer_height_0 = 0.2 +material_final_print_temperature = 210 +material_flow_layer_0 = 113.0 +material_initial_print_temperature = 220 +material_print_temperature = 210 +material_print_temperature_layer_0 = 220 +optimize_wall_printing_order = True +retraction_combing = infill +retraction_extrusion_window = 10 +skin_angles = [ ] +skin_line_width = =line_width +skin_material_flow = 97.0 +skin_overlap = 10 +skirt_line_count = 3 +small_feature_speed_factor = 100 +small_feature_speed_factor_0 = 30 +small_hole_max_size = 10 +speed_layer_0 = 50 +speed_topbottom = 150 +speed_wall_0 = 150 +speed_wall_x = 250 +wall_overhang_angle = 55 +wall_overhang_speed_factor = 30 +xy_offset_layer_0 = -0.15 \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg new file mode 100644 index 0000000000..e32229845a --- /dev/null +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ankermake_m5 +name = Fine +version = 4 + +[metadata] +global_quality = True +quality_type = fine +setting_version = 17 +type = quality +weight = 1 + +[values] +adhesion_type = skirt +bridge_settings_enabled = False +brim_width = 10 +cool_min_layer_time = 6 +fill_outline_gaps = False +hole_xy_offset = 0.15 +infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) +infill_material_flow = 100 +infill_overlap = 30 +infill_sparse_density = 15 +initial_layer_line_width_factor = 80 +jerk_enabled = False +layer_height = 0.12 +layer_height_0 = 0.12 +material_final_print_temperature = 210 +material_flow_layer_0 = 113.0 +material_initial_print_temperature = 220 +material_print_temperature = 210 +material_print_temperature_layer_0 = 220 +optimize_wall_printing_order = True +retraction_combing = infill +retraction_extrusion_window = 10 +skin_angles = [ ] +skin_line_width = =line_width +skin_material_flow = 97 +skin_overlap = 10 +skirt_line_count = 3 +small_feature_speed_factor = 80 +small_feature_speed_factor_0 = 30 +small_hole_max_size = 10 +speed_layer_0 = 50 +speed_print = 150 +speed_topbottom = 80 +speed_wall_0 = 80 +speed_wall_x = 150 +wall_line_count = 4 +wall_overhang_angle = 55 +wall_overhang_speed_factor = 50 +xy_offset_layer_0 = -0.15 +z_seam_corner = z_seam_corner_weighted \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg new file mode 100644 index 0000000000..e69ac9f8c8 --- /dev/null +++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg @@ -0,0 +1,53 @@ +[general] +definition = ankermake_m5 +name = Normal +version = 4 + +[metadata] +global_quality = True +quality_type = normal +setting_version = 20 +type = quality +weight = 0 + +[values] +adhesion_type = skirt +bridge_settings_enabled = False +brim_width = 10 +fill_outline_gaps = False +hole_xy_offset = 0.15 +infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) +infill_material_flow = 100 +infill_overlap = 30 +infill_sparse_density = 15 +initial_layer_line_width_factor = 80 +jerk_enabled = False +layer_height = 0.2 +layer_height_0 = 0.14 +material_final_print_temperature = 210 +material_flow_layer_0 = 113.0 +material_initial_print_temperature = 220 +material_print_temperature = 210 +material_print_temperature_layer_0 = 220 +optimize_wall_printing_order = True +retraction_combing = infill +retraction_extrusion_window = 10 +skin_angles = [ ] +skin_line_width = =line_width +skin_material_flow = 97.0 +skin_overlap = 10 +skirt_line_count = 3 +small_feature_speed_factor = 80 +small_feature_speed_factor_0 = 30 +small_hole_max_size = 10 +speed_layer_0 = 50 +speed_print = 200 +speed_topbottom = 110 +speed_wall_0 = 110 +speed_wall_x = 200 +wall_line_count = 3 +wall_overhang_angle = 55 +wall_overhang_speed_factor = 50 +xy_offset_layer_0 = -0.15 +z_seam_position = backleft +z_seam_type = sharpest_corner \ No newline at end of file From 8f0b116df4aa472d7a8feaba030cd69187f0b0b4 Mon Sep 17 00:00:00 2001 From: just-trey Date: Mon, 24 Oct 2022 10:46:46 -0400 Subject: [PATCH 02/26] changed max speed warning --- resources/definitions/ankermake_m5.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 781d716761..7c4b7cc42f 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -128,14 +128,14 @@ "jerk_infill": { "value": 30 }, "jerk_print": { "value": 15 }, "jerk_travel": { "value": 15 }, - "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, + "speed_print": { "value": 250.0, "maximum_value_warning": 250 }, "speed_infill": { "maximum_value_warning": 300 }, "speed_topbottom": { "value": 150.0 }, "speed_travel_layer_0": { "value": 250.0 }, "speed_travel": { "value": "speed_travel_layer_0" }, - "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, - "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, - "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, + "speed_wall": { "value": 150.0, "maximum_value_warning": 250 }, + "speed_wall_0": { "value": 150.0, "maximum_value_warning": 250 }, + "speed_wall_x": { "value": 250.0, "maximum_value_warning": 250 }, "material_flow_layer_0": { "value": 120 }, "skin_monotonic": { "value": true }, "cool_min_layer_time": { "value": 6 }, From d653736325dd3c7321e51b15791d01551a5e6e28 Mon Sep 17 00:00:00 2001 From: Ed Ropple Date: Wed, 2 Nov 2022 01:12:06 -0400 Subject: [PATCH 03/26] fixed bed dimensions of Sovol SV01 and SV02 --- resources/definitions/SV01.def.json | 2 +- resources/definitions/SV02.def.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/SV01.def.json b/resources/definitions/SV01.def.json index bd7773de6f..8f59916717 100644 --- a/resources/definitions/SV01.def.json +++ b/resources/definitions/SV01.def.json @@ -19,7 +19,7 @@ "machine_name": { "default_value": "SV01" }, "machine_extruder_count": { "default_value": 1 }, "machine_width": { "default_value": 280 }, - "machine_depth": { "default_value": 260 }, + "machine_depth": { "default_value": 240 }, "machine_height": { "default_value": 300 }, "machine_max_feedrate_x": { "value": 500 }, "machine_max_feedrate_y": { "value": 500 }, diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json index ab2ad8439e..3051028143 100644 --- a/resources/definitions/SV02.def.json +++ b/resources/definitions/SV02.def.json @@ -20,8 +20,8 @@ "machine_name": { "default_value": "SV02" }, "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": true }, - "machine_width": { "default_value": 300 }, - "machine_depth": { "default_value": 250 }, + "machine_width": { "default_value": 280 }, + "machine_depth": { "default_value": 240 }, "machine_height": { "default_value": 300 }, "machine_center_is_zero": { "default_value": false }, "retraction_amount": { "default_value": 5}, From 8825094f055831cd477ec53456025b0d2e33b59c Mon Sep 17 00:00:00 2001 From: just-trey Date: Wed, 16 Nov 2022 10:07:29 -0500 Subject: [PATCH 04/26] update machine_head_with_fans_polygon --- resources/definitions/ankermake_m5.def.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 7c4b7cc42f..979fd4c457 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -128,14 +128,14 @@ "jerk_infill": { "value": 30 }, "jerk_print": { "value": 15 }, "jerk_travel": { "value": 15 }, - "speed_print": { "value": 250.0, "maximum_value_warning": 250 }, + "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, "speed_infill": { "maximum_value_warning": 300 }, "speed_topbottom": { "value": 150.0 }, "speed_travel_layer_0": { "value": 250.0 }, "speed_travel": { "value": "speed_travel_layer_0" }, - "speed_wall": { "value": 150.0, "maximum_value_warning": 250 }, - "speed_wall_0": { "value": 150.0, "maximum_value_warning": 250 }, - "speed_wall_x": { "value": 250.0, "maximum_value_warning": 250 }, + "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, + "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, + "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, "material_flow_layer_0": { "value": 120 }, "skin_monotonic": { "value": true }, "cool_min_layer_time": { "value": 6 }, @@ -150,6 +150,14 @@ "raft_airgap": { "default_value": 0.25 }, "brim_width": { "default_value": 5 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-50, 25], + [-50, -60], + [50, 25], + [50, -60] + ] + }, "machine_start_gcode": { "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" }, From 0e4c39c433e58c90241670edde453923bbefa447 Mon Sep 17 00:00:00 2001 From: just-trey Date: Wed, 23 Nov 2022 11:41:34 -0500 Subject: [PATCH 05/26] update setting_version --- resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg | 2 +- resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg index 6b69f5681a..1a10b6932f 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -6,7 +6,7 @@ version = 4 [metadata] global_quality = True quality_type = draft -setting_version = 17 +setting_version = 20 type = quality weight = -2 diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg index e32229845a..aa4ddae955 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -6,7 +6,7 @@ version = 4 [metadata] global_quality = True quality_type = fine -setting_version = 17 +setting_version = 20 type = quality weight = 1 From 2c5930dc8e4552859aa0975cd2c3fa4b3ea72051 Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 14:08:38 -0500 Subject: [PATCH 06/26] base cleanup --- .../ankermake_m5_draft.inst copy.cfg | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg new file mode 100644 index 0000000000..b342d27d0e --- /dev/null +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg @@ -0,0 +1,50 @@ +[general] +definition = ankermake_m5 +name = bridge_settings_enabled +version = 4 + +[metadata] +global_quality = True +quality_type = draft +setting_version = 20 +type = quality +weight = -2 + +[values] +adhesion_type = skirt +bridge_settings_enabled = False +brim_width = 10 +cool_min_layer_time = 6 +fill_outline_gaps = False +hole_xy_offset = 0.15 +infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) +infill_material_flow = 100 +infill_overlap = 30 +infill_sparse_density = 15 +initial_layer_line_width_factor = 80 +jerk_enabled = False +layer_height = 0.28 +layer_height_0 = 0.2 +material_final_print_temperature = 210 +material_flow_layer_0 = 113.0 +material_initial_print_temperature = 220 +material_print_temperature = 210 +material_print_temperature_layer_0 = 220 +optimize_wall_printing_order = True +retraction_combing = infill +retraction_extrusion_window = 10 +skin_angles = [ ] +skin_line_width = =line_width +skin_material_flow = 97.0 +skin_overlap = 10 +skirt_line_count = 3 +small_feature_speed_factor = 100 +small_feature_speed_factor_0 = 30 +small_hole_max_size = 10 +speed_layer_0 = 50 +speed_topbottom = 150 +speed_wall_0 = 150 +speed_wall_x = 250 +wall_overhang_angle = 55 +wall_overhang_speed_factor = 30 +xy_offset_layer_0 = -0.15 \ No newline at end of file From d021ce5577d7e6026e1d2b3c86061a751d14b63a Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 14:08:58 -0500 Subject: [PATCH 07/26] bae cleanup --- resources/definitions/ankermake_m5.def.json | 117 +----------------- .../ankermake_m5_extruder_0.def.json | 1 - 2 files changed, 2 insertions(+), 116 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 979fd4c457..c912ec6a8b 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -14,107 +14,7 @@ "machine_extruder_trains": { "0": "ankermake_m5_extruder_0" }, - "preferred_material": "generic_pla", - "exclude_materials": [ - "Vertex_Delta_ABS", - "Vertex_Delta_PET", - "Vertex_Delta_PLA", - "Vertex_Delta_TPU", - "chromatik_pla", - "dsm_arnitel2045_175", - "dsm_novamid1070_175", - "fabtotum_abs", - "fabtotum_nylon", - "fabtotum_pla", - "fabtotum_tpu", - "fiberlogy_hd_pla", - "filo3d_pla", - "filo3d_pla_green", - "filo3d_pla_red", - "generic_abs", - "generic_bam", - "generic_cffcpe", - "generic_cffpa", - "generic_cpe", - "generic_cpe_plus", - "generic_gffcpe", - "generic_gffpa", - "generic_hips", - "generic_nylon", - "generic_pc", - "generic_petg", - "generic_pla", - "generic_pp", - "generic_pva", - "generic_tough_pla", - "generic_tpu", - "imade3d_petg_green", - "imade3d_petg_pink", - "imade3d_pla_green", - "imade3d_pla_pink", - "innofill_innoflex60_175", - "octofiber_pla", - "polyflex_pla", - "polymax_pla", - "polyplus_pla", - "polywood_pla", - "structur3d_dap100silicone", - "tizyx_abs", - "tizyx_pla", - "tizyx_pla_bois", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", - "verbatim_bvoh_175", - "zyyx_pro_flex", - "zyyx_pro_pla" - ] + "preferred_material": "generic_pla" }, "overrides": { @@ -124,11 +24,7 @@ "machine_depth": { "default_value": 235 }, "machine_heated_bed": { "default_value": true }, "material_diameter": { "default_value": 1.75 }, - "jerk_enabled": { "value": true }, - "jerk_infill": { "value": 30 }, - "jerk_print": { "value": 15 }, - "jerk_travel": { "value": 15 }, - "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, + "speed_print": { "maximum_value_warning": 300 }, "speed_infill": { "maximum_value_warning": 300 }, "speed_topbottom": { "value": 150.0 }, "speed_travel_layer_0": { "value": 250.0 }, @@ -137,19 +33,16 @@ "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, "material_flow_layer_0": { "value": 120 }, - "skin_monotonic": { "value": true }, "cool_min_layer_time": { "value": 6 }, "cool_min_speed": { "value": 30 }, "retraction_amount": { "default_value": 1.5 }, "retraction_speed": { "default_value": 70 }, - "acceleration_enabled": { "value": "False" }, "acceleration_print": { "value": "2500" }, "acceleration_travel": { "value": "acceleration_print" }, "adhesion_type": { "default_value": "skirt" }, "raft_margin": { "default_value": 5 }, "raft_airgap": { "default_value": 0.25 }, "brim_width": { "default_value": 5 }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_head_with_fans_polygon": { "default_value": [ [-50, 25], @@ -158,12 +51,6 @@ [50, -60] ] }, - "machine_start_gcode": { - "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" - }, - "machine_end_gcode": { - "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" - }, "gantry_height": { "value": 25 } } } diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json index 4baf1f765d..fa1e375dbf 100644 --- a/resources/extruders/ankermake_m5_extruder_0.def.json +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -8,7 +8,6 @@ }, "overrides": { - "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } } From ba12649e31bbcb719d08d1e3c8ec15b79a2ea61e Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 15:55:54 -0500 Subject: [PATCH 08/26] refactor to parent --- resources/definitions/ankermake_m5.def.json | 38 ++++++++++++------- .../ankermake_m5/ankermake_m5_draft.inst.cfg | 35 +---------------- .../ankermake_m5/ankermake_m5_fine.inst.cfg | 36 +----------------- .../ankermake_m5/ankermake_m5_normal.inst.cfg | 36 +----------------- 4 files changed, 29 insertions(+), 116 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index c912ec6a8b..1d885ed379 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -19,30 +19,42 @@ "overrides": { "machine_name": { "default_value": "AnkerMake M5" }, - "machine_width": { "default_value": 235 }, - "machine_height": { "default_value": 250 }, - "machine_depth": { "default_value": 235 }, - "machine_heated_bed": { "default_value": true }, "material_diameter": { "default_value": 1.75 }, + "machine_width": { "default_value": 235 }, + "machine_depth": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_heated_bed": { "default_value": true }, + "initial_layer_line_width_factor": { "value": 80 }, + "optimize_wall_printing_order": { "value": true }, + "infill_sparse_density": { "value": 15 }, + "infill_overlap": { "value": 30 }, + "material_flow_layer_0": { "value": 113 }, + "skin_material_flow": { "value": 97.0 }, "speed_print": { "maximum_value_warning": 300 }, "speed_infill": { "maximum_value_warning": 300 }, - "speed_topbottom": { "value": 150.0 }, - "speed_travel_layer_0": { "value": 250.0 }, - "speed_travel": { "value": "speed_travel_layer_0" }, "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, - "material_flow_layer_0": { "value": 120 }, - "cool_min_layer_time": { "value": 6 }, - "cool_min_speed": { "value": 30 }, - "retraction_amount": { "default_value": 1.5 }, - "retraction_speed": { "default_value": 70 }, + "speed_topbottom": { "value": 150.0 }, + "speed_travel": { "value": 250.0 }, + "speed_travel_layer_0": { "value": "speed_travel" }, "acceleration_print": { "value": "2500" }, "acceleration_travel": { "value": "acceleration_print" }, + "retraction_amount": { "default_value": 1.5 }, + "retraction_speed": { "default_value": 70 }, + "retraction_combing": { "value": "infill" }, + "cool_min_layer_time": { "value": 6 }, + "cool_min_speed": { "value": 30 }, "adhesion_type": { "default_value": "skirt" }, "raft_margin": { "default_value": 5 }, "raft_airgap": { "default_value": 0.25 }, - "brim_width": { "default_value": 5 }, + "skin_overlap": { "value": 10 }, + "skirt_line_count": { "value": 3 }, + "small_feature_speed_factor": { "value": 80 }, + "small_feature_speed_factor_0": { "value": 30 }, + "small_hole_max_size": { "value": 10 }, + "wall_overhang_angle": { "value": 55 }, + "wall_overhang_speed_factor": { "value": 50 }, "machine_head_with_fans_polygon": { "default_value": [ [-50, 25], diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg index 1a10b6932f..437ff2b0f2 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -11,40 +11,9 @@ type = quality weight = -2 [values] -adhesion_type = skirt -bridge_settings_enabled = False -brim_width = 10 -cool_min_layer_time = 6 -fill_outline_gaps = False -hole_xy_offset = 0.15 -infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) -infill_material_flow = 100 -infill_overlap = 30 -infill_sparse_density = 15 -initial_layer_line_width_factor = 80 -jerk_enabled = False layer_height = 0.28 layer_height_0 = 0.2 -material_final_print_temperature = 210 -material_flow_layer_0 = 113.0 -material_initial_print_temperature = 220 -material_print_temperature = 210 -material_print_temperature_layer_0 = 220 -optimize_wall_printing_order = True -retraction_combing = infill -retraction_extrusion_window = 10 -skin_angles = [ ] -skin_line_width = =line_width -skin_material_flow = 97.0 -skin_overlap = 10 -skirt_line_count = 3 -small_feature_speed_factor = 100 -small_feature_speed_factor_0 = 30 -small_hole_max_size = 10 -speed_layer_0 = 50 -speed_topbottom = 150 +speed_print = 250 speed_wall_0 = 150 speed_wall_x = 250 -wall_overhang_angle = 55 -wall_overhang_speed_factor = 30 -xy_offset_layer_0 = -0.15 \ No newline at end of file +wall_line_count = 2 \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg index aa4ddae955..daf586e55d 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -11,43 +11,9 @@ type = quality weight = 1 [values] -adhesion_type = skirt -bridge_settings_enabled = False -brim_width = 10 -cool_min_layer_time = 6 -fill_outline_gaps = False -hole_xy_offset = 0.15 -infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) -infill_material_flow = 100 -infill_overlap = 30 -infill_sparse_density = 15 -initial_layer_line_width_factor = 80 -jerk_enabled = False layer_height = 0.12 layer_height_0 = 0.12 -material_final_print_temperature = 210 -material_flow_layer_0 = 113.0 -material_initial_print_temperature = 220 -material_print_temperature = 210 -material_print_temperature_layer_0 = 220 -optimize_wall_printing_order = True -retraction_combing = infill -retraction_extrusion_window = 10 -skin_angles = [ ] -skin_line_width = =line_width -skin_material_flow = 97 -skin_overlap = 10 -skirt_line_count = 3 -small_feature_speed_factor = 80 -small_feature_speed_factor_0 = 30 -small_hole_max_size = 10 -speed_layer_0 = 50 speed_print = 150 -speed_topbottom = 80 speed_wall_0 = 80 speed_wall_x = 150 -wall_line_count = 4 -wall_overhang_angle = 55 -wall_overhang_speed_factor = 50 -xy_offset_layer_0 = -0.15 -z_seam_corner = z_seam_corner_weighted \ No newline at end of file +wall_line_count = 4 \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg index e69ac9f8c8..b94ffdc77e 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg @@ -11,43 +11,9 @@ type = quality weight = 0 [values] -adhesion_type = skirt -bridge_settings_enabled = False -brim_width = 10 -fill_outline_gaps = False -hole_xy_offset = 0.15 -infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) -infill_material_flow = 100 -infill_overlap = 30 -infill_sparse_density = 15 -initial_layer_line_width_factor = 80 -jerk_enabled = False layer_height = 0.2 layer_height_0 = 0.14 -material_final_print_temperature = 210 -material_flow_layer_0 = 113.0 -material_initial_print_temperature = 220 -material_print_temperature = 210 -material_print_temperature_layer_0 = 220 -optimize_wall_printing_order = True -retraction_combing = infill -retraction_extrusion_window = 10 -skin_angles = [ ] -skin_line_width = =line_width -skin_material_flow = 97.0 -skin_overlap = 10 -skirt_line_count = 3 -small_feature_speed_factor = 80 -small_feature_speed_factor_0 = 30 -small_hole_max_size = 10 -speed_layer_0 = 50 speed_print = 200 -speed_topbottom = 110 speed_wall_0 = 110 speed_wall_x = 200 -wall_line_count = 3 -wall_overhang_angle = 55 -wall_overhang_speed_factor = 50 -xy_offset_layer_0 = -0.15 -z_seam_position = backleft -z_seam_type = sharpest_corner \ No newline at end of file +wall_line_count = 3 \ No newline at end of file From 3a522ddb07d6da6ac2f6b84081332ee0df1fe5c2 Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 15:59:21 -0500 Subject: [PATCH 09/26] removed uneeded file --- .../ankermake_m5_draft.inst copy.cfg | 50 ------------------- 1 file changed, 50 deletions(-) delete mode 100644 resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg deleted file mode 100644 index b342d27d0e..0000000000 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst copy.cfg +++ /dev/null @@ -1,50 +0,0 @@ -[general] -definition = ankermake_m5 -name = bridge_settings_enabled -version = 4 - -[metadata] -global_quality = True -quality_type = draft -setting_version = 20 -type = quality -weight = -2 - -[values] -adhesion_type = skirt -bridge_settings_enabled = False -brim_width = 10 -cool_min_layer_time = 6 -fill_outline_gaps = False -hole_xy_offset = 0.15 -infill_line_distance = =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 == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1)))) -infill_material_flow = 100 -infill_overlap = 30 -infill_sparse_density = 15 -initial_layer_line_width_factor = 80 -jerk_enabled = False -layer_height = 0.28 -layer_height_0 = 0.2 -material_final_print_temperature = 210 -material_flow_layer_0 = 113.0 -material_initial_print_temperature = 220 -material_print_temperature = 210 -material_print_temperature_layer_0 = 220 -optimize_wall_printing_order = True -retraction_combing = infill -retraction_extrusion_window = 10 -skin_angles = [ ] -skin_line_width = =line_width -skin_material_flow = 97.0 -skin_overlap = 10 -skirt_line_count = 3 -small_feature_speed_factor = 100 -small_feature_speed_factor_0 = 30 -small_hole_max_size = 10 -speed_layer_0 = 50 -speed_topbottom = 150 -speed_wall_0 = 150 -speed_wall_x = 250 -wall_overhang_angle = 55 -wall_overhang_speed_factor = 30 -xy_offset_layer_0 = -0.15 \ No newline at end of file From eb2ebd14812ed67231e4d1da2b2f98812a1a345f Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 16:03:16 -0500 Subject: [PATCH 10/26] fixi initial layer heights --- resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg | 2 +- resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg | 2 +- resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg index 437ff2b0f2..0c445107df 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -12,7 +12,7 @@ weight = -2 [values] layer_height = 0.28 -layer_height_0 = 0.2 +layer_height_0 = 0.28 speed_print = 250 speed_wall_0 = 150 speed_wall_x = 250 diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg index daf586e55d..71f6c01ed7 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -12,7 +12,7 @@ weight = 1 [values] layer_height = 0.12 -layer_height_0 = 0.12 +layer_height_0 = 0.16 speed_print = 150 speed_wall_0 = 80 speed_wall_x = 150 diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg index b94ffdc77e..405d3da099 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg @@ -12,7 +12,7 @@ weight = 0 [values] layer_height = 0.2 -layer_height_0 = 0.14 +layer_height_0 = 0.24 speed_print = 200 speed_wall_0 = 110 speed_wall_x = 200 From b6cbbefc49b78ecece152138d1bee122c5a317ca Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 16:10:16 -0500 Subject: [PATCH 11/26] remove machine_head_with_fans_polygon as values are nto correct --- resources/definitions/ankermake_m5.def.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 1d885ed379..bb3fb2d942 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -55,14 +55,6 @@ "small_hole_max_size": { "value": 10 }, "wall_overhang_angle": { "value": 55 }, "wall_overhang_speed_factor": { "value": 50 }, - "machine_head_with_fans_polygon": { - "default_value": [ - [-50, 25], - [-50, -60], - [50, 25], - [50, -60] - ] - }, "gantry_height": { "value": 25 } } } From 829968d215a89bb6daa81d65623464e58b043f7b Mon Sep 17 00:00:00 2001 From: just-trey Date: Fri, 25 Nov 2022 23:44:17 -0500 Subject: [PATCH 12/26] refactor and clean up --- resources/definitions/ankermake_m5.def.json | 44 +++++++------------ .../ankermake_m5/ankermake_m5_draft.inst.cfg | 6 +-- .../ankermake_m5/ankermake_m5_fine.inst.cfg | 6 +-- .../ankermake_m5/ankermake_m5_normal.inst.cfg | 6 +-- 4 files changed, 20 insertions(+), 42 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index bb3fb2d942..c16d83bae4 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -19,42 +19,32 @@ "overrides": { "machine_name": { "default_value": "AnkerMake M5" }, - "material_diameter": { "default_value": 1.75 }, "machine_width": { "default_value": 235 }, - "machine_depth": { "default_value": 235 }, "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 235 }, "machine_heated_bed": { "default_value": true }, - "initial_layer_line_width_factor": { "value": 80 }, - "optimize_wall_printing_order": { "value": true }, - "infill_sparse_density": { "value": 15 }, - "infill_overlap": { "value": 30 }, - "material_flow_layer_0": { "value": 113 }, - "skin_material_flow": { "value": 97.0 }, - "speed_print": { "maximum_value_warning": 300 }, + "material_diameter": { "default_value": 1.75 }, + "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, "speed_infill": { "maximum_value_warning": 300 }, - "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, - "speed_wall_0": { "value": 150.0, "maximum_value_warning": 300 }, - "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, "speed_topbottom": { "value": 150.0 }, "speed_travel": { "value": 250.0 }, - "speed_travel_layer_0": { "value": "speed_travel" }, - "acceleration_print": { "value": "2500" }, - "acceleration_travel": { "value": "acceleration_print" }, - "retraction_amount": { "default_value": 1.5 }, - "retraction_speed": { "default_value": 70 }, - "retraction_combing": { "value": "infill" }, + "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, + "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, + "material_flow_layer_0": { "value": 120 }, "cool_min_layer_time": { "value": 6 }, "cool_min_speed": { "value": 30 }, + "retraction_amount": { "default_value": 1.5 }, + "retraction_speed": { "default_value": 70 }, + "acceleration_enabled": { "value": "False" }, + "acceleration_print": { "value": "2500" }, "adhesion_type": { "default_value": "skirt" }, - "raft_margin": { "default_value": 5 }, - "raft_airgap": { "default_value": 0.25 }, - "skin_overlap": { "value": 10 }, - "skirt_line_count": { "value": 3 }, - "small_feature_speed_factor": { "value": 80 }, - "small_feature_speed_factor_0": { "value": 30 }, - "small_hole_max_size": { "value": 10 }, - "wall_overhang_angle": { "value": 55 }, - "wall_overhang_speed_factor": { "value": 50 }, + "retraction_combing": { "value": "infill" }, + "machine_start_gcode": { + "default_value": "M104 S{material_print_temperature_layer_0} ; set final nozzle temp\nM190 S{material_bed_temperature_layer_0} ; set and wait for nozzle temp to stabilize\nM109 S{material_print_temperature_layer_0} ; wait for nozzle temp to stabilize\nG28 ;Home\nG1 E10 F3600; push out retracted filament(fix for over retraction after prime)" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + }, "gantry_height": { "value": 25 } } } diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg index 0c445107df..adbd19c44d 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -12,8 +12,4 @@ weight = -2 [values] layer_height = 0.28 -layer_height_0 = 0.28 -speed_print = 250 -speed_wall_0 = 150 -speed_wall_x = 250 -wall_line_count = 2 \ No newline at end of file +layer_height_0 = 0.28 \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg index 71f6c01ed7..aeb5a377e8 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -12,8 +12,4 @@ weight = 1 [values] layer_height = 0.12 -layer_height_0 = 0.16 -speed_print = 150 -speed_wall_0 = 80 -speed_wall_x = 150 -wall_line_count = 4 \ No newline at end of file +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg index 405d3da099..fb46cdcd7e 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg @@ -12,8 +12,4 @@ weight = 0 [values] layer_height = 0.2 -layer_height_0 = 0.24 -speed_print = 200 -speed_wall_0 = 110 -speed_wall_x = 200 -wall_line_count = 3 \ No newline at end of file +layer_height_0 = 0.24 \ No newline at end of file From d1ebbaf6087ed72429759d74eae43b653082abbb Mon Sep 17 00:00:00 2001 From: just-trey Date: Sat, 26 Nov 2022 12:04:40 -0500 Subject: [PATCH 13/26] proper temp and limit warning handleing --- resources/definitions/ankermake_m5.def.json | 23 ++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index c16d83bae4..281da3cf4e 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -24,18 +24,31 @@ "machine_depth": { "default_value": 235 }, "machine_heated_bed": { "default_value": true }, "material_diameter": { "default_value": 1.75 }, - "speed_print": { "value": 250.0, "maximum_value_warning": 300 }, - "speed_infill": { "maximum_value_warning": 300 }, + "speed_print": { "value": 250.0, "maximum_value_warning": 255 }, + "speed_infill": { "maximum_value_warning": 255 }, "speed_topbottom": { "value": 150.0 }, "speed_travel": { "value": 250.0 }, - "speed_wall": { "value": 150.0, "maximum_value_warning": 300 }, - "speed_wall_x": { "value": 250.0, "maximum_value_warning": 300 }, + "speed_wall": { "value": 150.0, "maximum_value_warning": 255 }, + "speed_wall_x": { "value": 250.0, "maximum_value_warning": 255 }, + "skin_monotonic": { "default_value": true }, + "material_print_temperature": { + "maximum_value_warning": "260" + }, + "material_print_temperature_layer_0": { + "value": "material_print_temperature + 5", + "maximum_value_warning": "260" + }, + "material_bed_temperature": { "maximum_value_warning": "110" }, + "material_bed_temperature_layer_0": { + "value": "material_bed_temperature + 5", + "maximum_value_warning": "110" + }, "material_flow_layer_0": { "value": 120 }, "cool_min_layer_time": { "value": 6 }, "cool_min_speed": { "value": 30 }, "retraction_amount": { "default_value": 1.5 }, "retraction_speed": { "default_value": 70 }, - "acceleration_enabled": { "value": "False" }, + "acceleration_enabled": { "value": false }, "acceleration_print": { "value": "2500" }, "adhesion_type": { "default_value": "skirt" }, "retraction_combing": { "value": "infill" }, From 6f2ed8eca48e772b8d0db5fa526915db3951df82 Mon Sep 17 00:00:00 2001 From: just-trey Date: Thu, 1 Dec 2022 00:03:42 -0500 Subject: [PATCH 14/26] Update resources/extruders/ankermake_m5_extruder_0.def.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- resources/extruders/ankermake_m5_extruder_0.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json index fa1e375dbf..4ac2b1e7f1 100644 --- a/resources/extruders/ankermake_m5_extruder_0.def.json +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -8,7 +8,7 @@ }, "overrides": { - "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } } } From b814601393f15dbc08d8b8c0dce9c060e9f7dfd9 Mon Sep 17 00:00:00 2001 From: just-trey Date: Thu, 1 Dec 2022 00:04:06 -0500 Subject: [PATCH 15/26] Update resources/definitions/ankermake_m5.def.json Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- resources/definitions/ankermake_m5.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 281da3cf4e..d3d00518ed 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -48,7 +48,7 @@ "cool_min_speed": { "value": 30 }, "retraction_amount": { "default_value": 1.5 }, "retraction_speed": { "default_value": 70 }, - "acceleration_enabled": { "value": false }, + "acceleration_print": { "value": "2500" }, "adhesion_type": { "default_value": "skirt" }, "retraction_combing": { "value": "infill" }, From 747ed93e6b94be39c9f2236a927845dc519250a8 Mon Sep 17 00:00:00 2001 From: just-trey Date: Thu, 1 Dec 2022 00:37:35 -0500 Subject: [PATCH 16/26] remove exrta spacing --- resources/definitions/ankermake_m5.def.json | 1 - resources/extruders/ankermake_m5_extruder_0.def.json | 2 -- 2 files changed, 3 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index d3d00518ed..00846f9d58 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -48,7 +48,6 @@ "cool_min_speed": { "value": 30 }, "retraction_amount": { "default_value": 1.5 }, "retraction_speed": { "default_value": 70 }, - "acceleration_print": { "value": "2500" }, "adhesion_type": { "default_value": "skirt" }, "retraction_combing": { "value": "infill" }, diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json index 4ac2b1e7f1..22a1dfe576 100644 --- a/resources/extruders/ankermake_m5_extruder_0.def.json +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -6,9 +6,7 @@ "machine": "ankermake_m5", "position": "0" }, - "overrides": { - "material_diameter": { "default_value": 1.75 } } } From a26b6e7ac31ba9f716d13326cab4a6f679713b8c Mon Sep 17 00:00:00 2001 From: just-trey Date: Thu, 1 Dec 2022 02:36:15 -0500 Subject: [PATCH 17/26] Add "extruder_nr": { "default_value": 0 }, --- resources/extruders/ankermake_m5_extruder_0.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json index 22a1dfe576..733447af23 100644 --- a/resources/extruders/ankermake_m5_extruder_0.def.json +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -7,6 +7,7 @@ "position": "0" }, "overrides": { + "extruder_nr": { "default_value": 0 }, "material_diameter": { "default_value": 1.75 } } } From 3c88a839e869b863a4f8137b3c1feb57b01fa0e5 Mon Sep 17 00:00:00 2001 From: rburema Date: Fri, 2 Dec 2022 08:22:26 +0000 Subject: [PATCH 18/26] Applied printer-linter format --- resources/definitions/ankermake_m5.def.json | 127 +++++++++--------- .../ankermake_m5_extruder_0.def.json | 26 ++-- .../ankermake_m5/ankermake_m5_draft.inst.cfg | 3 +- .../ankermake_m5/ankermake_m5_fine.inst.cfg | 3 +- .../ankermake_m5/ankermake_m5_normal.inst.cfg | 3 +- 5 files changed, 87 insertions(+), 75 deletions(-) diff --git a/resources/definitions/ankermake_m5.def.json b/resources/definitions/ankermake_m5.def.json index 00846f9d58..c09cb7579e 100644 --- a/resources/definitions/ankermake_m5.def.json +++ b/resources/definitions/ankermake_m5.def.json @@ -1,62 +1,69 @@ { - "name": "AnkerMake M5", - "version": 2, - "inherits": "fdmprinter", - "metadata": { - "visible": true, - "author": "just-trey", - "manufacturer": "AnkerMake", - "platform_texture": "ankermake_m5.png", - "platform": "ankermake_m5_platform.obj", - "has_machine_quality": true, - "preferred_quality_type": "normal", - "file_formats": "text/x-gcode", - "machine_extruder_trains": { - "0": "ankermake_m5_extruder_0" + "version": 2, + "name": "AnkerMake M5", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "just-trey", + "manufacturer": "AnkerMake", + "file_formats": "text/x-gcode", + "platform": "ankermake_m5_platform.obj", + "has_machine_quality": true, + "machine_extruder_trains": { "0": "ankermake_m5_extruder_0" }, + "platform_texture": "ankermake_m5.png", + "preferred_material": "generic_pla", + "preferred_quality_type": "normal" }, - "preferred_material": "generic_pla" - }, - - "overrides": { - "machine_name": { "default_value": "AnkerMake M5" }, - "machine_width": { "default_value": 235 }, - "machine_height": { "default_value": 250 }, - "machine_depth": { "default_value": 235 }, - "machine_heated_bed": { "default_value": true }, - "material_diameter": { "default_value": 1.75 }, - "speed_print": { "value": 250.0, "maximum_value_warning": 255 }, - "speed_infill": { "maximum_value_warning": 255 }, - "speed_topbottom": { "value": 150.0 }, - "speed_travel": { "value": 250.0 }, - "speed_wall": { "value": 150.0, "maximum_value_warning": 255 }, - "speed_wall_x": { "value": 250.0, "maximum_value_warning": 255 }, - "skin_monotonic": { "default_value": true }, - "material_print_temperature": { - "maximum_value_warning": "260" - }, - "material_print_temperature_layer_0": { - "value": "material_print_temperature + 5", - "maximum_value_warning": "260" - }, - "material_bed_temperature": { "maximum_value_warning": "110" }, - "material_bed_temperature_layer_0": { - "value": "material_bed_temperature + 5", - "maximum_value_warning": "110" - }, - "material_flow_layer_0": { "value": 120 }, - "cool_min_layer_time": { "value": 6 }, - "cool_min_speed": { "value": 30 }, - "retraction_amount": { "default_value": 1.5 }, - "retraction_speed": { "default_value": 70 }, - "acceleration_print": { "value": "2500" }, - "adhesion_type": { "default_value": "skirt" }, - "retraction_combing": { "value": "infill" }, - "machine_start_gcode": { - "default_value": "M104 S{material_print_temperature_layer_0} ; set final nozzle temp\nM190 S{material_bed_temperature_layer_0} ; set and wait for nozzle temp to stabilize\nM109 S{material_print_temperature_layer_0} ; wait for nozzle temp to stabilize\nG28 ;Home\nG1 E10 F3600; push out retracted filament(fix for over retraction after prime)" - }, - "machine_end_gcode": { - "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" - }, - "gantry_height": { "value": 25 } - } -} + "overrides": + { + "acceleration_print": { "value": "2500" }, + "adhesion_type": { "default_value": "skirt" }, + "cool_min_layer_time": { "value": 6 }, + "cool_min_speed": { "value": 30 }, + "gantry_height": { "value": 25 }, + "machine_depth": { "default_value": 235 }, + "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 250 }, + "machine_name": { "default_value": "AnkerMake M5" }, + "machine_start_gcode": { "default_value": "M104 S{material_print_temperature_layer_0} ; set final nozzle temp\nM190 S{material_bed_temperature_layer_0} ; set and wait for nozzle temp to stabilize\nM109 S{material_print_temperature_layer_0} ; wait for nozzle temp to stabilize\nG28 ;Home\nG1 E10 F3600; push out retracted filament(fix for over retraction after prime)" }, + "machine_width": { "default_value": 235 }, + "material_bed_temperature": { "maximum_value_warning": "110" }, + "material_bed_temperature_layer_0": + { + "maximum_value_warning": "110", + "value": "material_bed_temperature + 5" + }, + "material_diameter": { "default_value": 1.75 }, + "material_flow_layer_0": { "value": 120 }, + "material_print_temperature": { "maximum_value_warning": "260" }, + "material_print_temperature_layer_0": + { + "maximum_value_warning": "260", + "value": "material_print_temperature + 5" + }, + "retraction_amount": { "default_value": 1.5 }, + "retraction_combing": { "value": "infill" }, + "retraction_speed": { "default_value": 70 }, + "skin_monotonic": { "default_value": true }, + "speed_infill": { "maximum_value_warning": 255 }, + "speed_print": + { + "maximum_value_warning": 255, + "value": 250.0 + }, + "speed_topbottom": { "value": 150.0 }, + "speed_travel": { "value": 250.0 }, + "speed_wall": + { + "maximum_value_warning": 255, + "value": 150.0 + }, + "speed_wall_x": + { + "maximum_value_warning": 255, + "value": 250.0 + } + } +} \ No newline at end of file diff --git a/resources/extruders/ankermake_m5_extruder_0.def.json b/resources/extruders/ankermake_m5_extruder_0.def.json index 733447af23..ec65e16d8c 100644 --- a/resources/extruders/ankermake_m5_extruder_0.def.json +++ b/resources/extruders/ankermake_m5_extruder_0.def.json @@ -1,13 +1,15 @@ { - "version": 2, - "name": "Extruder 1", - "inherits": "fdmextruder", - "metadata": { - "machine": "ankermake_m5", - "position": "0" - }, - "overrides": { - "extruder_nr": { "default_value": 0 }, - "material_diameter": { "default_value": 1.75 } - } -} + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": + { + "machine": "ankermake_m5", + "position": "0" + }, + "overrides": + { + "extruder_nr": { "default_value": 0 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg index adbd19c44d..cb2ddba906 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_draft.inst.cfg @@ -12,4 +12,5 @@ weight = -2 [values] layer_height = 0.28 -layer_height_0 = 0.28 \ No newline at end of file +layer_height_0 = 0.28 + diff --git a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg index aeb5a377e8..82dd39ec1b 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_fine.inst.cfg @@ -12,4 +12,5 @@ weight = 1 [values] layer_height = 0.12 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 + diff --git a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg index fb46cdcd7e..f310a4ea70 100644 --- a/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg +++ b/resources/quality/ankermake_m5/ankermake_m5_normal.inst.cfg @@ -12,4 +12,5 @@ weight = 0 [values] layer_height = 0.2 -layer_height_0 = 0.24 \ No newline at end of file +layer_height_0 = 0.24 + From 8f994237640e834284dca51502b44d29fc67f7fc Mon Sep 17 00:00:00 2001 From: jspijker Date: Fri, 2 Dec 2022 10:00:47 +0100 Subject: [PATCH 19/26] Moved dxu variants to own sub folder Contributes to CURA-9951 --- resources/variants/{ => dxu}/dxu_0.25.inst.cfg | 0 resources/variants/{ => dxu}/dxu_0.4.inst.cfg | 0 resources/variants/{ => dxu}/dxu_0.6.inst.cfg | 0 resources/variants/{ => dxu}/dxu_0.8.inst.cfg | 0 resources/variants/{ => dxu}/dxu_dual_0.25.inst.cfg | 0 resources/variants/{ => dxu}/dxu_dual_0.4.inst.cfg | 0 resources/variants/{ => dxu}/dxu_dual_0.6.inst.cfg | 0 resources/variants/{ => dxu}/dxu_dual_0.8.inst.cfg | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename resources/variants/{ => dxu}/dxu_0.25.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_0.4.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_0.6.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_0.8.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_dual_0.25.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_dual_0.4.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_dual_0.6.inst.cfg (100%) rename resources/variants/{ => dxu}/dxu_dual_0.8.inst.cfg (100%) diff --git a/resources/variants/dxu_0.25.inst.cfg b/resources/variants/dxu/dxu_0.25.inst.cfg similarity index 100% rename from resources/variants/dxu_0.25.inst.cfg rename to resources/variants/dxu/dxu_0.25.inst.cfg diff --git a/resources/variants/dxu_0.4.inst.cfg b/resources/variants/dxu/dxu_0.4.inst.cfg similarity index 100% rename from resources/variants/dxu_0.4.inst.cfg rename to resources/variants/dxu/dxu_0.4.inst.cfg diff --git a/resources/variants/dxu_0.6.inst.cfg b/resources/variants/dxu/dxu_0.6.inst.cfg similarity index 100% rename from resources/variants/dxu_0.6.inst.cfg rename to resources/variants/dxu/dxu_0.6.inst.cfg diff --git a/resources/variants/dxu_0.8.inst.cfg b/resources/variants/dxu/dxu_0.8.inst.cfg similarity index 100% rename from resources/variants/dxu_0.8.inst.cfg rename to resources/variants/dxu/dxu_0.8.inst.cfg diff --git a/resources/variants/dxu_dual_0.25.inst.cfg b/resources/variants/dxu/dxu_dual_0.25.inst.cfg similarity index 100% rename from resources/variants/dxu_dual_0.25.inst.cfg rename to resources/variants/dxu/dxu_dual_0.25.inst.cfg diff --git a/resources/variants/dxu_dual_0.4.inst.cfg b/resources/variants/dxu/dxu_dual_0.4.inst.cfg similarity index 100% rename from resources/variants/dxu_dual_0.4.inst.cfg rename to resources/variants/dxu/dxu_dual_0.4.inst.cfg diff --git a/resources/variants/dxu_dual_0.6.inst.cfg b/resources/variants/dxu/dxu_dual_0.6.inst.cfg similarity index 100% rename from resources/variants/dxu_dual_0.6.inst.cfg rename to resources/variants/dxu/dxu_dual_0.6.inst.cfg diff --git a/resources/variants/dxu_dual_0.8.inst.cfg b/resources/variants/dxu/dxu_dual_0.8.inst.cfg similarity index 100% rename from resources/variants/dxu_dual_0.8.inst.cfg rename to resources/variants/dxu/dxu_dual_0.8.inst.cfg From d587c007143a76e21b5f993286a32b3d94401965 Mon Sep 17 00:00:00 2001 From: jspijker Date: Fri, 2 Dec 2022 10:01:19 +0100 Subject: [PATCH 20/26] Added dxu_umo(_dual) variants Fixes CURA-9951 --- resources/variants/dxu/dxu_umo_0.25.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_0.4.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_0.6.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_0.8.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg | 13 +++++++++++++ resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg | 13 +++++++++++++ 8 files changed, 104 insertions(+) create mode 100644 resources/variants/dxu/dxu_umo_0.25.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_0.4.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_0.6.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_0.8.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg create mode 100644 resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg diff --git a/resources/variants/dxu/dxu_umo_0.25.inst.cfg b/resources/variants/dxu/dxu_umo_0.25.inst.cfg new file mode 100644 index 0000000000..1df95dd05c --- /dev/null +++ b/resources/variants/dxu/dxu_umo_0.25.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.25 mm +version = 4 +definition = dxu_umo + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_0.4.inst.cfg b/resources/variants/dxu/dxu_umo_0.4.inst.cfg new file mode 100644 index 0000000000..47ecb4dd6a --- /dev/null +++ b/resources/variants/dxu/dxu_umo_0.4.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.4 mm +version = 4 +definition = dxu_umo + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_0.6.inst.cfg b/resources/variants/dxu/dxu_umo_0.6.inst.cfg new file mode 100644 index 0000000000..05984e4007 --- /dev/null +++ b/resources/variants/dxu/dxu_umo_0.6.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.6 mm +version = 4 +definition = dxu_umo + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 +machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_0.8.inst.cfg b/resources/variants/dxu/dxu_umo_0.8.inst.cfg new file mode 100644 index 0000000000..21427ce0fe --- /dev/null +++ b/resources/variants/dxu/dxu_umo_0.8.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.8 mm +version = 4 +definition = dxu_umo + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg new file mode 100644 index 0000000000..ea72cc50af --- /dev/null +++ b/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.25 mm +version = 4 +definition = dxu_umo_dual + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg new file mode 100644 index 0000000000..060943173b --- /dev/null +++ b/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.4 mm +version = 4 +definition = dxu_umo_dual + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg new file mode 100644 index 0000000000..6c1baa090d --- /dev/null +++ b/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.6 mm +version = 4 +definition = dxu_umo_dual + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 +machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file diff --git a/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg new file mode 100644 index 0000000000..5f51a55d59 --- /dev/null +++ b/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.8 mm +version = 4 +definition = dxu_umo_dual + +[metadata] +setting_version = 20 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file From b788987ae15755c77c5a90da6c0691e866526f67 Mon Sep 17 00:00:00 2001 From: jellespijker Date: Fri, 2 Dec 2022 09:07:39 +0000 Subject: [PATCH 21/26] Applied printer-linter format --- resources/variants/dxu/dxu_0.25.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_0.4.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_0.6.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_0.8.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_dual_0.25.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_dual_0.4.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_dual_0.6.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_dual_0.8.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_0.25.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_0.4.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_0.6.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_0.8.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg | 7 ++++--- resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg | 7 ++++--- 16 files changed, 64 insertions(+), 48 deletions(-) diff --git a/resources/variants/dxu/dxu_0.25.inst.cfg b/resources/variants/dxu/dxu_0.25.inst.cfg index bc2f225b27..eedf5108e8 100644 --- a/resources/variants/dxu/dxu_0.25.inst.cfg +++ b/resources/variants/dxu/dxu_0.25.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu name = 0.25 mm version = 4 -definition = dxu [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.25 -machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 0.8 + diff --git a/resources/variants/dxu/dxu_0.4.inst.cfg b/resources/variants/dxu/dxu_0.4.inst.cfg index 46cd2f377e..1795f42dfb 100644 --- a/resources/variants/dxu/dxu_0.4.inst.cfg +++ b/resources/variants/dxu/dxu_0.4.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu name = 0.4 mm version = 4 -definition = dxu [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.4 -machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.05 + diff --git a/resources/variants/dxu/dxu_0.6.inst.cfg b/resources/variants/dxu/dxu_0.6.inst.cfg index d23bc8f1b6..ae53a2fcd7 100644 --- a/resources/variants/dxu/dxu_0.6.inst.cfg +++ b/resources/variants/dxu/dxu_0.6.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu name = 0.6 mm version = 4 -definition = dxu [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.6 -machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.25 + diff --git a/resources/variants/dxu/dxu_0.8.inst.cfg b/resources/variants/dxu/dxu_0.8.inst.cfg index 3585bd9c63..e69188081b 100644 --- a/resources/variants/dxu/dxu_0.8.inst.cfg +++ b/resources/variants/dxu/dxu_0.8.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu name = 0.8 mm version = 4 -definition = dxu [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.8 -machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.35 + diff --git a/resources/variants/dxu/dxu_dual_0.25.inst.cfg b/resources/variants/dxu/dxu_dual_0.25.inst.cfg index 8e354c10f9..22aa527d46 100644 --- a/resources/variants/dxu/dxu_dual_0.25.inst.cfg +++ b/resources/variants/dxu/dxu_dual_0.25.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_dual name = 0.25 mm version = 4 -definition = dxu_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.25 -machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 0.8 + diff --git a/resources/variants/dxu/dxu_dual_0.4.inst.cfg b/resources/variants/dxu/dxu_dual_0.4.inst.cfg index 7daea17a91..6d54c18be6 100644 --- a/resources/variants/dxu/dxu_dual_0.4.inst.cfg +++ b/resources/variants/dxu/dxu_dual_0.4.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_dual name = 0.4 mm version = 4 -definition = dxu_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.4 -machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.05 + diff --git a/resources/variants/dxu/dxu_dual_0.6.inst.cfg b/resources/variants/dxu/dxu_dual_0.6.inst.cfg index 8272da71d6..d52aa9a3a3 100644 --- a/resources/variants/dxu/dxu_dual_0.6.inst.cfg +++ b/resources/variants/dxu/dxu_dual_0.6.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_dual name = 0.6 mm version = 4 -definition = dxu_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.6 -machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.25 + diff --git a/resources/variants/dxu/dxu_dual_0.8.inst.cfg b/resources/variants/dxu/dxu_dual_0.8.inst.cfg index 63b41f92b1..40f2070c60 100644 --- a/resources/variants/dxu/dxu_dual_0.8.inst.cfg +++ b/resources/variants/dxu/dxu_dual_0.8.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_dual name = 0.8 mm version = 4 -definition = dxu_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.8 -machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.35 + diff --git a/resources/variants/dxu/dxu_umo_0.25.inst.cfg b/resources/variants/dxu/dxu_umo_0.25.inst.cfg index 1df95dd05c..143c63d509 100644 --- a/resources/variants/dxu/dxu_umo_0.25.inst.cfg +++ b/resources/variants/dxu/dxu_umo_0.25.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo name = 0.25 mm version = 4 -definition = dxu_umo [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.25 -machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 0.8 + diff --git a/resources/variants/dxu/dxu_umo_0.4.inst.cfg b/resources/variants/dxu/dxu_umo_0.4.inst.cfg index 47ecb4dd6a..7f6d5ea62d 100644 --- a/resources/variants/dxu/dxu_umo_0.4.inst.cfg +++ b/resources/variants/dxu/dxu_umo_0.4.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo name = 0.4 mm version = 4 -definition = dxu_umo [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.4 -machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.05 + diff --git a/resources/variants/dxu/dxu_umo_0.6.inst.cfg b/resources/variants/dxu/dxu_umo_0.6.inst.cfg index 05984e4007..7b1b9c04f6 100644 --- a/resources/variants/dxu/dxu_umo_0.6.inst.cfg +++ b/resources/variants/dxu/dxu_umo_0.6.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo name = 0.6 mm version = 4 -definition = dxu_umo [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.6 -machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.25 + diff --git a/resources/variants/dxu/dxu_umo_0.8.inst.cfg b/resources/variants/dxu/dxu_umo_0.8.inst.cfg index 21427ce0fe..d90ee59b12 100644 --- a/resources/variants/dxu/dxu_umo_0.8.inst.cfg +++ b/resources/variants/dxu/dxu_umo_0.8.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo name = 0.8 mm version = 4 -definition = dxu_umo [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.8 -machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.35 + diff --git a/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg index ea72cc50af..d72350b1aa 100644 --- a/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg +++ b/resources/variants/dxu/dxu_umo_dual_0.25.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo_dual name = 0.25 mm version = 4 -definition = dxu_umo_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.25 -machine_nozzle_tip_outer_diameter = 0.8 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 0.8 + diff --git a/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg index 060943173b..121bfeeda3 100644 --- a/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg +++ b/resources/variants/dxu/dxu_umo_dual_0.4.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo_dual name = 0.4 mm version = 4 -definition = dxu_umo_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.4 -machine_nozzle_tip_outer_diameter = 1.05 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.05 + diff --git a/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg index 6c1baa090d..3de74bf660 100644 --- a/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg +++ b/resources/variants/dxu/dxu_umo_dual_0.6.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo_dual name = 0.6 mm version = 4 -definition = dxu_umo_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.6 -machine_nozzle_tip_outer_diameter = 1.25 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.25 + diff --git a/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg b/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg index 5f51a55d59..bbce69cbce 100644 --- a/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg +++ b/resources/variants/dxu/dxu_umo_dual_0.8.inst.cfg @@ -1,13 +1,14 @@ [general] +definition = dxu_umo_dual name = 0.8 mm version = 4 -definition = dxu_umo_dual [metadata] +hardware_type = nozzle setting_version = 20 type = variant -hardware_type = nozzle [values] machine_nozzle_size = 0.8 -machine_nozzle_tip_outer_diameter = 1.35 \ No newline at end of file +machine_nozzle_tip_outer_diameter = 1.35 + From 7820cc98404d7d7b8d0ebcfed6b39d1869c30bbf Mon Sep 17 00:00:00 2001 From: jspijker Date: Fri, 2 Dec 2022 10:28:36 +0100 Subject: [PATCH 22/26] Fix multiline printer-linter PR suggestions --- .../workflows/printer-linter-pr-diagnose.yml | 2 +- .github/workflows/printer-linter-pr-post.yml | 2 +- .../src/printerlinter/linters/defintion.py | 17 +++++------------ 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/.github/workflows/printer-linter-pr-diagnose.yml b/.github/workflows/printer-linter-pr-diagnose.yml index b218ebe623..881ea1df3e 100644 --- a/.github/workflows/printer-linter-pr-diagnose.yml +++ b/.github/workflows/printer-linter-pr-diagnose.yml @@ -52,7 +52,7 @@ jobs: path: printer-linter-result/ - name: Run clang-tidy-pr-comments action - uses: platisd/clang-tidy-pr-comments@master + uses: platisd/clang-tidy-pr-comments@fix_suggestions_for_multiline_comments with: github_token: ${{ secrets.GITHUB_TOKEN }} clang_tidy_fixes: result.yml diff --git a/.github/workflows/printer-linter-pr-post.yml b/.github/workflows/printer-linter-pr-post.yml index 3c3879b046..6a79714e59 100644 --- a/.github/workflows/printer-linter-pr-post.yml +++ b/.github/workflows/printer-linter-pr-post.yml @@ -73,7 +73,7 @@ jobs: unzip printer-linter-result.zip -d printer-linter-result - name: Run clang-tidy-pr-comments action - uses: platisd/clang-tidy-pr-comments@master + uses: platisd/clang-tidy-pr-comments@fix_suggestions_for_multiline_comments with: github_token: ${{ secrets.GITHUB_TOKEN }} clang_tidy_fixes: printer-linter-result/fixes.yml diff --git a/printer-linter/src/printerlinter/linters/defintion.py b/printer-linter/src/printerlinter/linters/defintion.py index d684cd98e9..b0201976be 100644 --- a/printer-linter/src/printerlinter/linters/defintion.py +++ b/printer-linter/src/printerlinter/linters/defintion.py @@ -45,24 +45,17 @@ class Definition(Linter): if is_redefined: redefined = re.compile(r'.*(\"' + key + r'\"[\s\:\S]*?)\{[\s\S]*?\},?') found = redefined.search(self._content) - # TODO: Figure out a way to support multiline fixes in the PR review GH Action, for now suggest no fix to ensure no ill-formed json are created - # see: https://github.com/platisd/clang-tidy-pr-comments/issues/37 - if len(found.group().splitlines()) > 1: - replacements = [] - else: - replacements = [Replacement( - file = self._file, - offset = found.span(1)[0], - length = len(found.group()), - replacement_text = "")] - yield Diagnostic( file = self._file, diagnostic_name = "diagnostic-definition-redundant-override", message = f"Overriding {key} with the same value ({value}) as defined in parent definition: {definition['inherits']}", level = "Warning", offset = found.span(0)[0], - replacements = replacements + replacements = [Replacement( + file = self._file, + offset = found.span(1)[0], + length = len(found.group()), + replacement_text = "")] ) def _loadDefinitionFiles(self, definition_file) -> None: From 6da1abcd49542b9899f8e8ca18200e779544c916 Mon Sep 17 00:00:00 2001 From: jellespijker Date: Sat, 3 Dec 2022 14:03:25 +0000 Subject: [PATCH 23/26] Applied printer-linter format --- resources/definitions/SV01.def.json | 131 +++++++++++----------- resources/definitions/SV02.def.json | 164 ++++++++++++++-------------- 2 files changed, 147 insertions(+), 148 deletions(-) diff --git a/resources/definitions/SV01.def.json b/resources/definitions/SV01.def.json index 8f59916717..81af2793dc 100644 --- a/resources/definitions/SV01.def.json +++ b/resources/definitions/SV01.def.json @@ -1,66 +1,65 @@ -{ - "version": 2, - "name": "Sovol-SV01", - "inherits": "fdmprinter", - "metadata": { - "visible": true, - "author": "Sovol", - "manufacturer": "Sovol 3D", - "file_formats": "text/x-gcode", - "has_variants": false, - "has_machine_quality": false, - "preferred_quality_type": "draft", - "machine_extruder_trains": { - "0": "SV01_extruder_0" - } - }, - - "overrides": { - "machine_name": { "default_value": "SV01" }, - "machine_extruder_count": { "default_value": 1 }, - "machine_width": { "default_value": 280 }, - "machine_depth": { "default_value": 240 }, - "machine_height": { "default_value": 300 }, - "machine_max_feedrate_x": { "value": 500 }, - "machine_max_feedrate_y": { "value": 500 }, - "machine_max_feedrate_z": { "value": 10 }, - "machine_max_feedrate_e": { "value": 50 }, - "machine_max_acceleration_x": { "value": 500 }, - "machine_max_acceleration_y": { "value": 500 }, - "machine_max_acceleration_z": { "value": 100 }, - "machine_max_acceleration_e": { "value": 5000 }, - "machine_acceleration": { "value": 500 }, - "machine_max_jerk_xy": { "value": 10 }, - "machine_max_jerk_z": { "value": 0.4 }, - "machine_max_jerk_e": { "value": 5 }, - "machine_heated_bed": { "default_value": true }, - "material_diameter": { "default_value": 1.75 }, - "acceleration_print": { "value": 500 }, - "acceleration_travel": { "value": 500 }, - "acceleration_travel_layer_0": { "value": "acceleration_travel" }, - "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" }, - "jerk_print": { "value": 8 }, - "jerk_travel": { "value": "jerk_print" }, - "jerk_travel_layer_0": { "value": "jerk_travel" }, - "acceleration_enabled": { "value": false }, - "jerk_enabled": { "value": false }, - "speed_print": { "value": 50.0 } , - "skirt_brim_speed": { "value": "speed_layer_0" }, - "optimize_wall_printing_order": { "value": "True" }, - "material_initial_print_temperature": { "value": "material_print_temperature" }, - "material_final_print_temperature": { "value": "material_print_temperature" }, - "z_seam_type": { "value": "'back'" }, - "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, - "infill_pattern": { "value": "'lines'" }, - "infill_before_walls": { "value": false }, - "infill_overlap": { "value": 30.0 }, - "skin_overlap": { "value": 10.0 }, - "infill_wipe_dist": { "value": 0.0 }, - "wall_0_wipe_dist": { "value": 0.0 }, - "retraction_amount": { "default_value": 3}, - "retraction_speed": { "default_value": 50}, - "adhesion_type": { "value": "'skirt'" }, - "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, - "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X0 Y240 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positioning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" } - } -} +{ + "version": 2, + "name": "Sovol-SV01", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "Sovol", + "manufacturer": "Sovol 3D", + "file_formats": "text/x-gcode", + "has_machine_quality": false, + "has_variants": false, + "machine_extruder_trains": { "0": "SV01_extruder_0" }, + "preferred_quality_type": "draft" + }, + "overrides": + { + "acceleration_enabled": { "value": false }, + "acceleration_print": { "value": 500 }, + "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" }, + "acceleration_travel": { "value": 500 }, + "acceleration_travel_layer_0": { "value": "acceleration_travel" }, + "adhesion_type": { "value": "'skirt'" }, + "infill_before_walls": { "value": false }, + "infill_overlap": { "value": 30.0 }, + "infill_pattern": { "value": "'lines'" }, + "infill_wipe_dist": { "value": 0.0 }, + "jerk_enabled": { "value": false }, + "jerk_print": { "value": 8 }, + "jerk_travel": { "value": "jerk_print" }, + "jerk_travel_layer_0": { "value": "jerk_travel" }, + "machine_acceleration": { "value": 500 }, + "machine_depth": { "default_value": 240 }, + "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X0 Y240 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positioning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, + "machine_extruder_count": { "default_value": 1 }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 300 }, + "machine_max_acceleration_e": { "value": 5000 }, + "machine_max_acceleration_x": { "value": 500 }, + "machine_max_acceleration_y": { "value": 500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_feedrate_e": { "value": 50 }, + "machine_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 10 }, + "machine_max_jerk_e": { "value": 5 }, + "machine_max_jerk_xy": { "value": 10 }, + "machine_max_jerk_z": { "value": 0.4 }, + "machine_name": { "default_value": "SV01" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, + "machine_width": { "default_value": 280 }, + "material_diameter": { "default_value": 1.75 }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "optimize_wall_printing_order": { "value": "True" }, + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 50 }, + "skin_overlap": { "value": 10.0 }, + "skirt_brim_speed": { "value": "speed_layer_0" }, + "speed_print": { "value": 50.0 }, + "wall_0_wipe_dist": { "value": 0.0 }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, + "z_seam_type": { "value": "'back'" } + } +} \ No newline at end of file diff --git a/resources/definitions/SV02.def.json b/resources/definitions/SV02.def.json index 3051028143..57245e8e68 100644 --- a/resources/definitions/SV02.def.json +++ b/resources/definitions/SV02.def.json @@ -1,82 +1,82 @@ -{ - "version": 2, - "name": "Sovol-SV02", - "inherits": "fdmprinter", - "metadata": { - "visible": true, - "author": "Sovol", - "manufacturer": "Sovol 3D", - "file_formats": "text/x-gcode", - "has_variants": false, - "has_machine_quality": false, - "preferred_quality_type": "draft", - "machine_extruder_trains": { - "0": "SV02_extruder_0", - "1": "SV02_extruder_1" - } - }, - - "overrides": { - "machine_name": { "default_value": "SV02" }, - "machine_extruder_count": { "default_value": 2 }, - "machine_heated_bed": { "default_value": true }, - "machine_width": { "default_value": 280 }, - "machine_depth": { "default_value": 240 }, - "machine_height": { "default_value": 300 }, - "machine_center_is_zero": { "default_value": false }, - "retraction_amount": { "default_value": 5}, - "retraction_speed": { "default_value": 50}, - "gantry_height": { "value": "30" }, - "speed_print": { "default_value": 50 }, - "default_material_print_temperature": { "value": 195 }, - "material_initial_print_temperature": { "value": "material_print_temperature" }, - "material_final_print_temperature": { "value": 195 }, - "machine_max_feedrate_x": { "value": 500 }, - "machine_max_feedrate_y": { "value": 500 }, - "machine_max_feedrate_z": { "value": 10 }, - "machine_max_feedrate_e": { "value": 50 }, - "machine_max_acceleration_x": { "value": 500 }, - "machine_max_acceleration_y": { "value": 500 }, - "machine_max_acceleration_z": { "value": 100 }, - "machine_max_acceleration_e": { "value": 500 }, - "machine_acceleration": { "value": 500 }, - - "material_diameter": { "default_value": 1.75 }, - - "acceleration_print": { "value": 500 }, - "acceleration_travel": { "value": 500 }, - "acceleration_travel_layer_0": { "value": "acceleration_travel" }, - "jerk_print": { "value": 8 }, - "jerk_travel": { "value": "jerk_print" }, - "jerk_travel_layer_0": { "value": "jerk_travel" }, - "acceleration_enabled": { "value": false }, - "jerk_enabled": { "value": false }, - "machine_max_jerk_xy": { "default_value": 5.0 }, - "machine_max_jerk_z": { "default_value": 0.4 }, - "machine_max_jerk_e": { "default_value": 5.0 }, - "prime_tower_position_x": { "value": "240" }, - "prime_tower_position_y": { "value": "190" }, - "prime_tower_size": { "value": "30" }, - "prime_tower_wipe_enabled": { "default_value": true }, - "prime_tower_min_volume": { "value": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height'))/2"}, - "travel_retract_before_outer_wall": { "default_value": true }, - "infill_sparse_density": { "value": "15" }, - "infill_pattern": { "value": "'lines'" }, - "infill_before_walls": { "value": false }, - "infill_overlap": { "value": 30.0 }, - "skin_overlap": { "value": 10.0 }, - "infill_wipe_dist": { "value": 0.0 }, - "wall_0_wipe_dist": { "value": 0.0 }, - "adhesion_type": { "value": "'skirt'" }, - "brim_replaces_support": { "value": false }, - "skirt_gap": { "value": 2 }, - "skirt_line_count": { "value": 3 }, - "adhesion_extruder_nr": { "value": 1 }, - "brim_width": { "value": 4 }, - "coasting_enable": { "default_value": true }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E5 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, - "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y240 ;move bed for easy part removal\nM84 ;disable steppers" }, - "top_bottom_thickness": { "default_value": 1 } - } -} +{ + "version": 2, + "name": "Sovol-SV02", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "Sovol", + "manufacturer": "Sovol 3D", + "file_formats": "text/x-gcode", + "has_machine_quality": false, + "has_variants": false, + "machine_extruder_trains": + { + "0": "SV02_extruder_0", + "1": "SV02_extruder_1" + }, + "preferred_quality_type": "draft" + }, + "overrides": + { + "acceleration_enabled": { "value": false }, + "acceleration_print": { "value": 500 }, + "acceleration_travel": { "value": 500 }, + "acceleration_travel_layer_0": { "value": "acceleration_travel" }, + "adhesion_extruder_nr": { "value": 1 }, + "adhesion_type": { "value": "'skirt'" }, + "brim_replaces_support": { "value": false }, + "brim_width": { "value": 4 }, + "coasting_enable": { "default_value": true }, + "default_material_print_temperature": { "value": 195 }, + "gantry_height": { "value": "30" }, + "infill_before_walls": { "value": false }, + "infill_overlap": { "value": 30.0 }, + "infill_pattern": { "value": "'lines'" }, + "infill_sparse_density": { "value": "15" }, + "infill_wipe_dist": { "value": 0.0 }, + "jerk_enabled": { "value": false }, + "jerk_print": { "value": 8 }, + "jerk_travel": { "value": "jerk_print" }, + "jerk_travel_layer_0": { "value": "jerk_travel" }, + "machine_acceleration": { "value": 500 }, + "machine_center_is_zero": { "default_value": false }, + "machine_depth": { "default_value": 240 }, + "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y240 ;move bed for easy part removal\nM84 ;disable steppers" }, + "machine_extruder_count": { "default_value": 2 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 300 }, + "machine_max_acceleration_e": { "value": 500 }, + "machine_max_acceleration_x": { "value": 500 }, + "machine_max_acceleration_y": { "value": 500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_feedrate_e": { "value": 50 }, + "machine_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 10 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_max_jerk_xy": { "default_value": 5.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_name": { "default_value": "SV02" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E5 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, + "machine_width": { "default_value": 280 }, + "material_diameter": { "default_value": 1.75 }, + "material_final_print_temperature": { "value": 195 }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "prime_tower_min_volume": { "value": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height'))/2" }, + "prime_tower_position_x": { "value": "240" }, + "prime_tower_position_y": { "value": "190" }, + "prime_tower_size": { "value": "30" }, + "prime_tower_wipe_enabled": { "default_value": true }, + "retraction_amount": { "default_value": 5 }, + "retraction_speed": { "default_value": 50 }, + "skin_overlap": { "value": 10.0 }, + "skirt_gap": { "value": 2 }, + "skirt_line_count": { "value": 3 }, + "speed_print": { "default_value": 50 }, + "top_bottom_thickness": { "default_value": 1 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "wall_0_wipe_dist": { "value": 0.0 } + } +} \ No newline at end of file From 88792d7bdaa9355575171f15b552b5e764f90956 Mon Sep 17 00:00:00 2001 From: jspijker Date: Sun, 4 Dec 2022 13:20:10 +0100 Subject: [PATCH 24/26] Added fusion3 F410 Based on PR #13355 Credits to @64bittuning Adding support for the Fusion3Designs F410 machine. Later the F400, F306 and Edge will follow. My business owns a Fusion3 F410 and using it has been difficult. The manufacturer originally shipped the machine with a license for Simplify 3d. We originally purchased the machine about three years ago, and the S3D license was lost when the previous controlling employee left the organization. I have spent a long time trying to get this machine operational and unfortunately my employer will not replace the S3D license. Enter Ultimaker Cura... I have been using Cura since 4.4 and have spent a LONG time building and updating profiles. In 2020 I added Tronxy support, and recently performed a major overhaul on the profiles package. This brought me back to my attempt at adding support for our F410. The vast majority of the profiles used here are a culmination of things I have learned through building other profiles, as well as using data points extracted from the large repository of S3D profiles that were released by Fusion3Design. The profiles all work, they produce good results, and use all of the original settings placed fourth by the manufacturer. There are unfortunately some limitations that I felt were important to work around. Fusion3Design has a large list of certified materials. With such, in an effort to help prevent users from voiding the warranty on their machine, materials that do not match the approved materials list have been omitted from the machine profile at this time. The Generic profiles provided by Fusion3Design have been incorporated in order to provide support for PLA, PETG, ABS, ASA, PC, PA, CPE, and TPU. There are many brand name and specialty filament specific profiles available, however since Ultimaker Cura does not already "support" these materials with specific selectable profiles, the best option was to leave them for a future update. Please view the certified materials lists below. https://www.fusion3design.com/wp-content/uploads/2020/11/Fusion3-Certified-Materials-List-updated-10.28.2020-Simplify3D.pdf https://www.fusion3design.com/list/ Fusion3Design can be found at https://www.fusion3design.com/ Co-authored-by: 64bittuning <64bittuning@users.noreply.github.com> --- resources/definitions/fusion3.def.json | 224 ++++++++++++++++++ resources/definitions/fusion3_f410.def.json | 138 +++++++++++ .../extruders/fusion3_extruder_0.def.json | 15 ++ .../fusion3/fusion3_0.4_ABS_fine.inst.cfg | 42 ++++ .../fusion3/fusion3_0.4_ABS_good.inst.cfg | 41 ++++ .../fusion3/fusion3_0.4_ABS_normal.inst.cfg | 41 ++++ .../fusion3/fusion3_0.4_ASA_fine.inst.cfg | 43 ++++ .../fusion3/fusion3_0.4_ASA_good.inst.cfg | 43 ++++ .../fusion3/fusion3_0.4_ASA_normal.inst.cfg | 43 ++++ .../fusion3/fusion3_0.4_CPE_normal.inst.cfg | 44 ++++ .../fusion3/fusion3_0.4_PA_normal.inst.cfg | 44 ++++ .../fusion3/fusion3_0.4_PC_normal.inst.cfg | 40 ++++ .../fusion3/fusion3_0.4_PETG_normal.inst.cfg | 43 ++++ .../fusion3/fusion3_0.4_PLA_fine.inst.cfg | 42 ++++ .../fusion3/fusion3_0.4_PLA_good.inst.cfg | 44 ++++ .../fusion3/fusion3_0.4_PLA_normal.inst.cfg | 43 ++++ .../fusion3/fusion3_0.4_TPU_normal.inst.cfg | 50 ++++ .../fusion3/fusion3_0.6_ABS_good.inst.cfg | 43 ++++ .../fusion3/fusion3_0.6_ABS_low.inst.cfg | 42 ++++ .../fusion3/fusion3_0.6_ASA_good.inst.cfg | 43 ++++ .../fusion3/fusion3_0.6_ASA_low.inst.cfg | 43 ++++ .../fusion3/fusion3_0.6_CPE_good.inst.cfg | 44 ++++ .../fusion3/fusion3_0.6_PA_good.inst.cfg | 44 ++++ .../fusion3/fusion3_0.6_PC_good.inst.cfg | 40 ++++ .../fusion3/fusion3_0.6_PETG_good.inst.cfg | 43 ++++ .../fusion3/fusion3_0.6_PLA_good.inst.cfg | 43 ++++ .../fusion3/fusion3_0.6_PLA_low.inst.cfg | 41 ++++ .../fusion3/fusion3_0.6_TPU_good.inst.cfg | 50 ++++ .../fusion3/fusion3_0.8_ABS_rapid.inst.cfg | 42 ++++ .../fusion3/fusion3_0.8_ABS_rough.inst.cfg | 42 ++++ .../fusion3/fusion3_0.8_ASA_rapid.inst.cfg | 43 ++++ .../fusion3/fusion3_0.8_ASA_rough.inst.cfg | 43 ++++ .../fusion3/fusion3_0.8_CPE_rapid.inst.cfg | 44 ++++ .../fusion3/fusion3_0.8_PA_rapid.inst.cfg | 44 ++++ .../fusion3/fusion3_0.8_PC_rapid.inst.cfg | 40 ++++ .../fusion3/fusion3_0.8_PETG_rapid.inst.cfg | 43 ++++ .../fusion3/fusion3_0.8_PLA_rapid.inst.cfg | 43 ++++ .../fusion3/fusion3_0.8_PLA_rough.inst.cfg | 41 ++++ .../fusion3/fusion3_0.8_TPU_rapid.inst.cfg | 50 ++++ .../fusion3/fusion3_global_fine.inst.cfg | 14 ++ .../fusion3/fusion3_global_good.inst.cfg | 14 ++ .../fusion3/fusion3_global_low.inst.cfg | 14 ++ .../fusion3/fusion3_global_normal.inst.cfg | 14 ++ .../fusion3/fusion3_global_rapid.inst.cfg | 14 ++ .../fusion3/fusion3_global_rough.inst.cfg | 14 ++ .../variants/fusion3/fusion3_0.4.inst.cfg | 13 + .../variants/fusion3/fusion3_0.6.inst.cfg | 13 + .../variants/fusion3/fusion3_0.8.inst.cfg | 13 + .../fusion3/fusion3_f410_0.4.inst.cfg | 13 + .../fusion3/fusion3_f410_0.6.inst.cfg | 13 + .../fusion3/fusion3_f410_0.8.inst.cfg | 13 + 51 files changed, 2093 insertions(+) create mode 100644 resources/definitions/fusion3.def.json create mode 100644 resources/definitions/fusion3_f410.def.json create mode 100644 resources/extruders/fusion3_extruder_0.def.json create mode 100644 resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PC_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_PC_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_PC_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_PLA_rough.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_fine.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_good.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_low.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_normal.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_rapid.inst.cfg create mode 100644 resources/quality/fusion3/fusion3_global_rough.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_0.4.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_0.6.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_0.8.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_f410_0.4.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_f410_0.6.inst.cfg create mode 100644 resources/variants/fusion3/fusion3_f410_0.8.inst.cfg diff --git a/resources/definitions/fusion3.def.json b/resources/definitions/fusion3.def.json new file mode 100644 index 0000000000..08a3103e4e --- /dev/null +++ b/resources/definitions/fusion3.def.json @@ -0,0 +1,224 @@ +{ + "version": 2, + "name": "Fusion3 Base Printer", + "inherits": "fdmprinter", + "metadata": + { + "visible": false, + "author": "Keith Varin", + "manufacturer": "Fusion3Design", + "file_formats": "text/x-gcode", + "exclude_materials": [ + "bestfilament_abs_skyblue", + "bestfilament_petg_orange", + "bestfilament_pla_green", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "emotiontech_abs", + "emotiontech_absx", + "emotiontech_acetate", + "emotiontech_asax", + "emotiontech_bvoh", + "emotiontech_copa", + "emotiontech_hips", + "emotiontech_nylon_1030", + "emotiontech_nylon_1030cf", + "emotiontech_nylon_1070", + "emotiontech_pc", + "emotiontech_pekk", + "emotiontech_petg", + "emotiontech_pla", + "emotiontech_pla_hr_870", + "emotiontech_pva-m", + "emotiontech_pva-s", + "emotiontech_tpu98a", + "eryone_petg", + "eryone_pla", + "eryone_pla_glow", + "eryone_pla_matte", + "eryone_pla_wood", + "eSUN_PETG_Black", + "eSUN_PETG_Grey", + "eSUN_PETG_Purple", + "Extrudr_GreenTECPro_Anthracite_175", + "Extrudr_GreenTECPro_Black_175", + "Extrudr_GreenTECPro_Blue_175", + "Extrudr_GreenTECPro_Nature_175", + "Extrudr_GreenTECPro_Red_175", + "Extrudr_GreenTECPro_Silver_175", + "Extrudr_GreenTECPro_White_175", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fdplast_abs_tomato", + "fdplast_petg_gray", + "fdplast_pla_olive", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "generic_bam", + "generic_bvoh_175", + "generic_gffcpe", + "generic_gffpa", + "generic_hips", + "generic_hips_175", + "generic_pp", + "generic_pva", + "generic_pva_175", + "goofoo_abs", + "goofoo_asa", + "goofoo_bronze_pla", + "goofoo_emarble_pla", + "goofoo_esilk_pla", + "goofoo_hips", + "goofoo_pa", + "goofoo_pa_cf", + "goofoo_pc", + "goofoo_peek", + "goofoo_petg", + "goofoo_pla", + "goofoo_pva", + "goofoo_tpe_83a", + "goofoo_tpu_87a", + "goofoo_tpu_95a", + "goofoo_wood_pla", + "imade3d_petg_175", + "imade3d_pla_175", + "innofill_innoflex60_175", + "layer_one_black_pla", + "layer_one_dark_gray_pla", + "layer_one_white_pla", + "leapfrog_abs_natural", + "leapfrog_epla_natural", + "leapfrog_pva_natural", + "octofiber_pla", + "redd_abs", + "redd_asa", + "redd_hips", + "redd_nylon", + "redd_petg", + "redd_pla", + "redd_tpe", + "structur3d_dap100silicone", + "tizyx_abs", + "tizyx_flex", + "tizyx_petg", + "tizyx_pla", + "tizyx_pla_bois", + "tizyx_pva", + "ultimaker_abs_black", + "ultimaker_abs_blue", + "ultimaker_abs_green", + "ultimaker_abs_grey", + "ultimaker_abs_orange", + "ultimaker_abs_pearl-gold", + "ultimaker_abs_red", + "ultimaker_abs_silver-metallic", + "ultimaker_abs_white", + "ultimaker_abs_yellow", + "ultimaker_bam", + "ultimaker_cpe_black", + "ultimaker_cpe_blue", + "ultimaker_cpe_dark-grey", + "ultimaker_cpe_green", + "ultimaker_cpe_light-grey", + "ultimaker_cpe_plus_black", + "ultimaker_cpe_plus_transparent", + "ultimaker_cpe_plus_white", + "ultimaker_cpe_red", + "ultimaker_cpe_transparent", + "ultimaker_cpe_white", + "ultimaker_cpe_yellow", + "ultimaker_nylon_black", + "ultimaker_nylon_transparent", + "ultimaker_pc_black", + "ultimaker_pc_transparent", + "ultimaker_pc_white", + "ultimaker_petg_black", + "ultimaker_petg_blue", + "ultimaker_petg_blue_translucent", + "ultimaker_petg_green", + "ultimaker_petg_green_translucent", + "ultimaker_petg_grey", + "ultimaker_petg_orange", + "ultimaker_petg_red", + "ultimaker_petg_red_translucent", + "ultimaker_petg_silver", + "ultimaker_petg_transparent", + "ultimaker_petg_white", + "ultimaker_petg_yellow", + "ultimaker_petg_yellow_fluorescent", + "ultimaker_pla_black", + "ultimaker_pla_blue", + "ultimaker_pla_green", + "ultimaker_pla_magenta", + "ultimaker_pla_orange", + "ultimaker_pla_pearl-white", + "ultimaker_pla_red", + "ultimaker_pla_silver-metallic", + "ultimaker_pla_transparent", + "ultimaker_pla_white", + "ultimaker_pla_yellow", + "ultimaker_pp_transparent", + "ultimaker_pva", + "ultimaker_tough_pla_black", + "ultimaker_tough_pla_green", + "ultimaker_tough_pla_red", + "ultimaker_tough_pla_white", + "ultimaker_tpu_black", + "ultimaker_tpu_blue", + "ultimaker_tpu_red", + "ultimaker_tpu_white", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA", + "Vertex_Delta_PLA_Glitter", + "Vertex_Delta_PLA_Mat", + "Vertex_Delta_PLA_Satin", + "Vertex_Delta_PLA_Wood", + "Vertex_Delta_TPU", + "volumic_abs_ultra", + "volumic_arma_ultra", + "volumic_asa_ultra", + "volumic_br80_ultra", + "volumic_bumper_ultra", + "volumic_cu80_ultra", + "volumic_flex93_ultra", + "volumic_medical_ultra", + "volumic_nylon_ultra", + "volumic_pekk_carbone", + "volumic_petgcarbone_ultra", + "volumic_petg_ultra", + "volumic_pla_ultra", + "volumic_pp_ultra", + "volumic_strong_ultra", + "volumic_support_ultra", + "xyzprinting_abs", + "xyzprinting_antibact_pla", + "xyzprinting_carbon_fiber", + "xyzprinting_colorinkjet_pla", + "xyzprinting_flexible", + "xyzprinting_metallic_pla", + "xyzprinting_nylon", + "xyzprinting_petg", + "xyzprinting_pla", + "xyzprinting_tough_pla", + "xyzprinting_tpu", + "zyyx_pro_flex", + "zyyx_pro_pla" + ], + "first_start_actions": [ "MachineSettingsAction" ], + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "machine_extruder_trains": { "0": "fusion3_extruder_0" }, + "preferred_material": "generic_abs", + "preferred_quality_type": "normal", + "preferred_variant_name": "0.4mm Nozzle", + "variants_name": "Nozzle Size" + } +} \ No newline at end of file diff --git a/resources/definitions/fusion3_f410.def.json b/resources/definitions/fusion3_f410.def.json new file mode 100644 index 0000000000..091a8f7ac5 --- /dev/null +++ b/resources/definitions/fusion3_f410.def.json @@ -0,0 +1,138 @@ +{ + "version": 2, + "name": "Fusion3 F410", + "inherits": "fusion3", + "metadata": + { + "visible": true, + "quality_definition": "fusion3" + }, + "overrides": + { + "acceleration_print": { "value": "machine_acceleration" }, + "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" }, + "acceleration_travel": { "value": "machine_acceleration" }, + "acceleration_travel_layer_0": { "value": "acceleration_travel" }, + "adaptive_layer_height_variation": { "value": 0.04 }, + "adaptive_layer_height_variation_step": { "value": 0.04 }, + "adhesion_type": { "value": "'skirt'" }, + "bottom_layers": { "value": "math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))" }, + "brim_replaces_support": { "value": false }, + "cool_fan_full_at_height": { "value": "layer_height_0 * 4" }, + "cool_min_speed": { "value": "speed_print * 0.3" }, + "gantry_height": { "value": 40 }, + "infill_before_walls": { "value": false }, + "infill_overlap": { "value": 20.0 }, + "infill_pattern": { "value": "'zigzag' if infill_sparse_density > 89 else 'lines' if infill_sparse_density > 31 else 'cubic'" }, + "infill_wipe_dist": { "value": 0.0 }, + "jerk_print": { "value": 10 }, + "jerk_travel": { "value": "jerk_print" }, + "jerk_travel_layer_0": { "value": "jerk_travel" }, + "machine_acceleration": { "value": 2000 }, + "machine_depth": { "default_value": 355 }, + "machine_end_gcode": { "default_value": "; Fusion3 F410 end code\nG91 ;relative positioning\nG1 E-5.00 F1000 ;retract 5mm of filament\nG1 Z+1.00 X-20.0 Y+20.0 F10000 ;short quick move to disengage from print\nG90 ;absolute positioning\nG1 X0.0 Y350.0 F9000 ; move head to back left corner\nG91 ; relative positioning\nG1 E-5.00 F500 ;retract additional filament to prevent oozing\nG90 ;absolute positioning\nM104 S0 ;turn off hotend\nM140 S0 ;turn off heatbed\n; Reset filament monitor\nM42 P63 S0\nG4 P100\nG4 P50\nM42 P63 S1\nG1 Z315 F1000 ;move print bed down to idle position\nM106 S0 ; shut off blower\nM84 ;motors off\nM561 ;clear bed probe transformation\n" }, + "machine_gcode_flavor": { "default_value": "RepRap (RepRap)" }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [-30, 30], + [-30, -30], + [30, -30], + [30, 30] + ] + }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 315 }, + "machine_max_acceleration_x": { "value": 5000 }, + "machine_max_acceleration_y": { "value": 5000 }, + "machine_max_acceleration_z": { "value": 500 }, + "machine_max_feedrate_e": { "value": 166 }, + "machine_max_feedrate_x": { "value": 550 }, + "machine_max_feedrate_y": { "value": 550 }, + "machine_max_feedrate_z": { "value": 40 }, + "machine_max_jerk_e": { "value": 30 }, + "machine_max_jerk_z": { "value": 1 }, + "machine_name": { "default_value": "Fusion3 F410" }, + "machine_start_gcode": { "default_value": "; Fusion3 F410 start code\nM104 S0 ; shutdown heater and prepare to print\nG21 ; set units to mm\nG90 ; use absolute coordinates\nT0 ; select tool 0\nG92 E0.0 ; reset e count\nM220 S100 ; reset speed multiplier\nM140 S{material_bed_temperature_layer_0} ; set bed temp and do not wait\nG32 ; call to run bed.g\nM190 S{material_bed_temperature_layer_0} ; Set bed temperature and wait\nM109 S{material_print_temperature_layer_0} ; set print head temperature and wait\n; === pause for heating ===\n; reset filament monitor\nM42 P63 S0\nG4 P100\nG4 P50\nM42 P63 S1\nG1 X350 Y0\nG1 Z10.0 F2000 ; move up\nG1 E10.0 F500 ; prime extruder\nG92 E0.0 ; reset e count\nG1 X330 Y15 F9000 ; move back\nG1 Z{layer_height_0} F1000 ; move down to begin wipe\nG1 X150 E4.0 F6000 ; wipe print head (extrude material while we do this)\nG92 E0.0 ; reset e count\n" }, + "machine_width": { "default_value": 355 }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "meshfix_maximum_resolution": { "value": "0.25" }, + "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" }, + "minimum_interface_area": { "value": 10 }, + "minimum_support_area": { "value": 2 }, + "optimize_wall_printing_order": { "value": "True" }, + "retract_at_layer_change": { "value": true }, + "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, + "retraction_combing_max_distance": { "value": 30 }, + "retraction_count_max": { "value": 100 }, + "retraction_extrusion_window": { "value": 5 }, + "retraction_hop": { "value": 0.2 }, + "retraction_hop_enabled": { "value": true }, + "retraction_prime_speed": + { + "maximum_value": "machine_max_feedrate_e", + "maximum_value_warning": "machine_max_feedrate_e *0.75" + }, + "retraction_retract_speed": + { + "maximum_value": "machine_max_feedrate_e", + "maximum_value_warning": "machine_max_feedrate_e *0.75" + }, + "retraction_speed": + { + "default_value": 100, + "maximum_value": "machine_max_feedrate_e", + "maximum_value_warning": "machine_max_feedrate_e *0.75" + }, + "skin_overlap": { "value": 10.0 }, + "skirt_gap": { "value": 10.0 }, + "skirt_line_count": { "value": 3 }, + "speed_infill": { "value": "speed_print *0.7" }, + "speed_layer_0": { "value": "speed_print *0.4" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": 100 }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_travel": { "value": "speed_print * 1.5" }, + "speed_travel_layer_0": { "value": "speed_travel *0.5" }, + "speed_wall": { "value": "speed_print *0.6" }, + "speed_wall_x": { "value": "speed_print *0.85" }, + "speed_z_hop": { "value": 5 }, + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_brim_enable": { "value": true }, + "support_brim_width": { "value": 4 }, + "support_infill_angles": + { + "value": [ + 45 + ] + }, + "support_infill_rate": { "value": "0 if support_enable and support_structure == 'tree' else 30" }, + "support_interface_density": { "value": 33.333 }, + "support_interface_height": { "value": "layer_height * 4" }, + "support_interface_pattern": { "value": "'grid'" }, + "support_interface_skip_height": { "value": 0.2 }, + "support_pattern": { "value": "'zigzag'" }, + "support_use_towers": { "value": false }, + "support_wall_count": { "value": 0 }, + "support_xy_distance": { "value": "wall_line_width_0 * 3" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "top_bottom_pattern": { "value": "'zigzag'" }, + "top_bottom_pattern_0": { "value": "'zigzag'" }, + "top_bottom_thickness": + { + "minimum_value_warning": "0.4", + "value": "(layer_height*3) + layer_height_0" + }, + "top_layers": { "value": "math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))" }, + "travel_avoid_other_parts": { "value": false }, + "travel_avoid_supports": { "value": true }, + "travel_retract_before_outer_wall": { "value": true }, + "wall_0_wipe_dist": { "value": 0.0 }, + "z_seam_corner": { "value": "'z_seam_corner_inner'" }, + "z_seam_type": { "value": "'sharpest_corner'" } + } +} \ No newline at end of file diff --git a/resources/extruders/fusion3_extruder_0.def.json b/resources/extruders/fusion3_extruder_0.def.json new file mode 100644 index 0000000000..4369308122 --- /dev/null +++ b/resources/extruders/fusion3_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": + { + "machine": "fusion3", + "position": "0" + }, + "overrides": + { + "extruder_nr": { "default_value": 0 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg new file mode 100644 index 0000000000..986203a593 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg @@ -0,0 +1,42 @@ +[general] +definition = fusion3 +name = Fine Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = fine +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 75 +inset_direction = outside_in +layer_height = 0.1 +layer_height_0 = 0.25 +line_width = 0.4 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 255.0 +retract_at_layer_change = False +retraction_amount = 2.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +speed_print = 35 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.55 +wall_thickness = 0.9 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg new file mode 100644 index 0000000000..66fc7b4cd2 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = good +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 15 +inset_direction = outside_in +layer_height = 0.3 +layer_height_0 = 0.3 +line_width = 0.4 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 275 +retract_at_layer_change = False +retraction_amount = 4.75 +retraction_combing = noskin +retraction_combing_max_distance = 10 +speed_print = 125 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.9 +wall_thickness = 0.8 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg new file mode 100644 index 0000000000..a96b271aaa --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height = 0.2 +layer_height_0 = 0.2 +line_width = 0.45 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 270 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +speed_print = 100 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.6 +wall_thickness = 0.8 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg new file mode 100644 index 0000000000..bcce323159 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Fine Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = fine +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 15 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 75 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.4 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 265 +retract_at_layer_change = False +retraction_amount = 2.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 50 +skirt_gap = 5 +skirt_line_count = 2 +speed_print = 35 +support_angle = 45 +support_enable = True +support_infill_rate = 40 +top_bottom_thickness = 0.7 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg new file mode 100644 index 0000000000..0d05e9acf3 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = good +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 15 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 20 +infill_sparse_density = 15 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.4 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 295 +retract_at_layer_change = False +retraction_amount = 4.75 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 2 +speed_print = 85 +support_angle = 45 +support_enable = True +support_infill_rate = 40 +top_bottom_thickness = 0.9 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg new file mode 100644 index 0000000000..170e3452fe --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 15 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.45 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 295 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 2 +speed_print = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.9 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg new file mode 100644 index 0000000000..ad746d5b7f --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_cpe_175 +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 11 +cool_min_layer_time_fan_speed_max = 10 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.45 +material_bed_temperature = 110 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 215 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 35 +speed_support = 35 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg new file mode 100644 index 0000000000..bc1518e866 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_nylon_175 +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 2.5 +cool_min_layer_time_fan_speed_max = 4 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.45 +material_bed_temperature = 75 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 275 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 65 +speed_support = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_PC_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PC_normal.inst.cfg new file mode 100644 index 0000000000..c0acff030d --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PC_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_pc_175 +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = false +cool_min_layer_time = 3 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.45 +material_bed_temperature = 130 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 295 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_layer_0 = 45 +speed_print = 85 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.9 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg new file mode 100644 index 0000000000..af6ebe4bf6 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_petg +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 75 +cool_fan_speed_min = 20 +cool_min_layer_time = 4 +cool_min_layer_time_fan_speed_max = 7 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.4 +material_bed_temperature = 65 +material_flow = 97 +material_flow_layer_0 = 97 +material_print_temperature = 260 +retract_at_layer_change = False +retraction_amount = 4.6 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 110 +skirt_gap = 5 +speed_print = 85 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg new file mode 100644 index 0000000000..3ad40a48d3 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg @@ -0,0 +1,42 @@ +[general] +definition = fusion3 +name = Fine Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = fine +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 30 +infill_sparse_density = 60 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.4 +material_bed_temperature = 55 +material_flow = 99 +material_print_temperature = 220 +retract_at_layer_change = False +retraction_amount = 2.5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +skirt_gap = 5 +speed_print = 40 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.6 +wall_thickness = 0.9 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg new file mode 100644 index 0000000000..ed7e1bf97a --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = good +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = 0.8 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 45 +infill_overlap = 20 +infill_pattern = zigzag +infill_sparse_density = 15 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.45 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 240 +retract_at_layer_change = False +retraction_amount = 4.25 +retraction_speed = 100 +skirt_gap = 5 +speed_print = 75 +speed_topbottom = 55 +speed_travel = 150 +speed_travel_layer_0 = 100 +speed_wall_0 = 50 +speed_wall_x = 65 +top_bottom_thickness = 0.9 +wall_thickness = 1.35 +xy_offset_layer_0 = -0.15 + diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg new file mode 100644 index 0000000000..23a2fee5a6 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = 0.8 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 45 +infill_overlap = 20 +infill_pattern = zigzag +infill_sparse_density = 25 +inset_direction = outside_in +layer_height_0 = 0.25 +line_width = 0.45 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 230 +retract_at_layer_change = False +retraction_amount = 4.25 +retraction_speed = 100 +skirt_gap = 5 +speed_topbottom = 55 +speed_travel = 150 +speed_travel_layer_0 = 100 +speed_wall_0 = 65 +speed_wall_x = 85 +top_bottom_thickness = 0.6 +wall_thickness = 1.35 +xy_offset_layer_0 = -0.15 + diff --git a/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg new file mode 100644 index 0000000000..e8b42c9cad --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +material = generic_tpu +quality_type = normal +setting_version = 20 +type = quality +variant = 0.4mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 15 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.2 +line_width = 0.4 +material_bed_temperature = 45 +material_flow = 125 +material_flow_layer_0 = 125 +material_print_temperature = 255 +retract_at_layer_change = False +retraction_amount = 10 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 50 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 20 +speed_layer_0 = 20 +speed_print = 25 +speed_support = 12 +speed_topbottom = 25 +speed_wall = 20 +speed_wall_0 = 20 +speed_wall_x = 20 +support_angle = 50 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.6 +wall_thickness = 0.8 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg new file mode 100644 index 0000000000..50c80e4beb --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height = 0.3 +layer_height_0 = 0.3 +line_width = 0.4 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 275.0 +retract_at_layer_change = False +retraction_amount = 2.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +speed_print = 35 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg new file mode 100644 index 0000000000..aa2cb476af --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg @@ -0,0 +1,42 @@ +[general] +definition = fusion3 +name = Low Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = low +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.35 +line_width = 0.65 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 275.0 +retract_at_layer_change = False +retraction_amount = 2.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +speed_print = 35 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg new file mode 100644 index 0000000000..0605b7e0b9 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 25 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 290 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 1 +speed_print = 85 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg new file mode 100644 index 0000000000..1cf45deea7 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Low Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = low +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 25 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.35 +line_width = 0.65 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 290 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 1 +speed_print = 75 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1 +wall_thickness = 1.3 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg new file mode 100644 index 0000000000..c65b298824 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_cpe_175 +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 11 +cool_min_layer_time_fan_speed_max = 10 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 110 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 280 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 35 +speed_support = 35 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg new file mode 100644 index 0000000000..c5f707b7c7 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_nylon_175 +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 2.5 +cool_min_layer_time_fan_speed_max = 4 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 75 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 275 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 65 +speed_support = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_PC_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PC_good.inst.cfg new file mode 100644 index 0000000000..50c6af40d1 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_PC_good.inst.cfg @@ -0,0 +1,40 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_pc_175 +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = False +cool_min_layer_time = 5 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 130 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 295 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_layer_0 = 25 +speed_print = 50 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg new file mode 100644 index 0000000000..408b8de63e --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_petg +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 100 +cool_fan_speed_min = 20 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 12 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 65 +material_flow = 97 +material_flow_layer_0 = 97 +material_print_temperature = 265 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +speed_print = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg new file mode 100644 index 0000000000..253d057ef2 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = 0.8 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 45 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 240 +retract_at_layer_change = False +retraction_amount = 4.2 +retraction_speed = 100 +skirt_gap = 5 +speed_infill = 75 +speed_print = 100 +speed_roofing = 50 +speed_topbottom = 55 +speed_travel = 150 +speed_travel_layer_0 = 100 +top_bottom_thickness = 0.9 +wall_line_count = 2 +xy_offset_layer_0 = -0.2 + diff --git a/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg new file mode 100644 index 0000000000..b5a610a6d2 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = fusion3 +name = Low Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = low +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = 0.8 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 45 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.35 +line_width = 0.65 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 240 +retract_at_layer_change = False +retraction_amount = 4.2 +retraction_speed = 100 +skirt_gap = 5 +speed_infill = 75 +speed_print = 125 +speed_travel = 150 +speed_travel_layer_0 = 100 +top_bottom_thickness = 1.0 +wall_thickness = 1.3 +xy_offset_layer_0 = -0.2 + diff --git a/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg new file mode 100644 index 0000000000..f727528f1d --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +material = generic_tpu +quality_type = good +setting_version = 20 +type = quality +variant = 0.6mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 15 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.3 +line_width = 0.6 +material_bed_temperature = 45 +material_flow = 125 +material_flow_layer_0 = 125 +material_print_temperature = 255 +retract_at_layer_change = False +retraction_amount = 10 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 50 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 25 +speed_layer_0 = 20 +speed_print = 25 +speed_support = 20 +speed_topbottom = 25 +speed_wall = 25 +speed_wall_0 = 20 +speed_wall_x = 25 +support_angle = 50 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 0.9 +wall_thickness = 1.2 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg new file mode 100644 index 0000000000..02b181eb96 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg @@ -0,0 +1,42 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 275.0 +retract_at_layer_change = False +retraction_amount = 4.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +speed_print = 83.3 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg new file mode 100644 index 0000000000..b1a6a4710a --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg @@ -0,0 +1,42 @@ +[general] +definition = fusion3 +name = Rough Quality +version = 4 + +[metadata] +material = generic_abs +quality_type = rough +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 65 +cool_fan_speed_min = 15 +cool_min_layer_time = 3 +cool_min_layer_time_fan_speed_max = 6 +infill_sparse_density = 15 +inset_direction = outside_in +layer_height_0 = 0.5 +line_width = 0.8 +material_bed_temperature = 110 +material_flow = 98 +material_print_temperature = 275.0 +retract_at_layer_change = False +retraction_amount = 4.25 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 55 +speed_print = 100 +speed_travel_layer_0 = 100 +support_angle = 45 +support_enable = True +support_infill_rate = 25 +top_bottom_thickness = 1.5 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.2 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg new file mode 100644 index 0000000000..ce7590920b --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 15 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 290 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 1 +speed_print = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.25 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg new file mode 100644 index 0000000000..d2903526ba --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Rough Quality +version = 4 + +[metadata] +material = generic_asa_175 +quality_type = rough +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 7 +cool_fan_speed = 15 +cool_fan_speed_min = 70 +cool_min_layer_time = 13 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.48 +line_width = 0.85 +material_bed_temperature = 100 +material_flow = 98 +material_flow_layer_0 = 98 +material_print_temperature = 290 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +skirt_line_count = 1 +speed_print = 55 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.5 +wall_thickness = 1.7 +xy_offset_layer_0 = -0.25 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg new file mode 100644 index 0000000000..2e7722b14c --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_cpe_175 +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 15 +cool_min_layer_time_fan_speed_max = 10 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 110 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 285 +retract_at_layer_change = False +retraction_amount = 4 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 35 +speed_support = 35 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.25 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg new file mode 100644 index 0000000000..899d2aa525 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg @@ -0,0 +1,44 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_nylon_175 +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 15 +cool_min_layer_time = 2.5 +cool_min_layer_time_fan_speed_max = 4 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 75 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 275 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_print = 65 +speed_support = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.25 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_PC_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PC_rapid.inst.cfg new file mode 100644 index 0000000000..95d3579290 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_PC_rapid.inst.cfg @@ -0,0 +1,40 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_pc_175 +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = brim +cool_fan_enabled = False +cool_min_layer_time = 5 +infill_overlap = 15 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 130 +material_flow = 100 +material_flow_layer_0 = 100 +material_print_temperature = 295 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +speed_layer_0 = 25 +speed_print = 50 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.25 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg new file mode 100644 index 0000000000..75ad9fd345 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_petg +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 75 +cool_fan_speed_min = 20 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 12 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 65 +material_flow = 97 +material_flow_layer_0 = 97 +material_print_temperature = 275 +retract_at_layer_change = False +retraction_amount = 5 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 115 +skirt_gap = 5 +speed_print = 65 +support_angle = 45 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg new file mode 100644 index 0000000000..bb682ba7f4 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg @@ -0,0 +1,43 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = 0.8 +cool_fan_speed = 100 +cool_fan_speed_min = 65 +cool_min_layer_time = 5 +cool_min_layer_time_fan_speed_max = 45 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 240 +material_print_temperature_layer_0 = 240 +retract_at_layer_change = False +retraction_amount = 4 +retraction_speed = 100 +skirt_gap = 5 +speed_infill = 45 +speed_print = 65 +speed_travel = 150 +speed_travel_layer_0 = 100 +speed_wall_x = 45 +top_bottom_thickness = 1.2 +wall_line_count = 2 +xy_offset_layer_0 = -0.25 + diff --git a/resources/quality/fusion3/fusion3_0.8_PLA_rough.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PLA_rough.inst.cfg new file mode 100644 index 0000000000..26776ac138 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_PLA_rough.inst.cfg @@ -0,0 +1,41 @@ +[general] +definition = fusion3 +name = Rough Quality +version = 4 + +[metadata] +material = generic_pla +quality_type = rough +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +adhesion_type = skirt +cool_fan_full_at_height = 1.0 +cool_fan_speed = 100 +cool_min_layer_time = 16 +cool_min_speed = 30 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.44 +line_width = 0.85 +material_bed_temperature = 55 +material_flow = 96 +material_flow_layer_0 = 96 +material_print_temperature = 240 +material_print_temperature_layer_0 = 240 +retract_at_layer_change = False +retraction_amount = 4 +retraction_speed = 100 +skirt_gap = 5 +speed_infill = 40 +speed_print = 60 +speed_travel = 150 +speed_travel_layer_0 = 100 +speed_wall_x = 40 +top_bottom_thickness = 1.4 +wall_line_count = 2 +xy_offset_layer_0 = -0.25 + diff --git a/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg new file mode 100644 index 0000000000..156cd71777 --- /dev/null +++ b/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg @@ -0,0 +1,50 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +material = generic_tpu +quality_type = rapid +setting_version = 20 +type = quality +variant = 0.8mm Nozzle + +[values] +cool_fan_enabled = True +cool_fan_full_layer = 6 +cool_fan_speed = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 20 +infill_overlap = 20 +infill_sparse_density = 30 +inset_direction = outside_in +layer_height_0 = 0.4 +line_width = 0.8 +material_bed_temperature = 45 +material_flow = 125 +material_flow_layer_0 = 125 +material_print_temperature = 255 +retract_at_layer_change = False +retraction_amount = 10 +retraction_combing = noskin +retraction_combing_max_distance = 10 +retraction_speed = 50 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 25 +speed_layer_0 = 20 +speed_print = 25 +speed_support = 20 +speed_topbottom = 25 +speed_wall = 25 +speed_wall_0 = 20 +speed_wall_x = 25 +support_angle = 50 +support_enable = True +support_infill_rate = 30 +top_bottom_thickness = 1.2 +wall_thickness = 1.6 +xy_offset_layer_0 = -0.15 +zig_zaggify_infill = True + diff --git a/resources/quality/fusion3/fusion3_global_fine.inst.cfg b/resources/quality/fusion3/fusion3_global_fine.inst.cfg new file mode 100644 index 0000000000..0d00e42595 --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_fine.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Fine Quality +version = 4 + +[metadata] +global_quality = True +quality_type = fine +setting_version = 20 +type = quality + +[values] +layer_height = 0.1 + diff --git a/resources/quality/fusion3/fusion3_global_good.inst.cfg b/resources/quality/fusion3/fusion3_global_good.inst.cfg new file mode 100644 index 0000000000..470068971a --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_good.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Good Quality +version = 4 + +[metadata] +global_quality = True +quality_type = good +setting_version = 20 +type = quality + +[values] +layer_height = 0.3 + diff --git a/resources/quality/fusion3/fusion3_global_low.inst.cfg b/resources/quality/fusion3/fusion3_global_low.inst.cfg new file mode 100644 index 0000000000..4fe7dc1e40 --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Low Quality +version = 4 + +[metadata] +global_quality = True +quality_type = low +setting_version = 20 +type = quality + +[values] +layer_height = 0.35 + diff --git a/resources/quality/fusion3/fusion3_global_normal.inst.cfg b/resources/quality/fusion3/fusion3_global_normal.inst.cfg new file mode 100644 index 0000000000..b1511dacf0 --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_normal.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Normal Quality +version = 4 + +[metadata] +global_quality = True +quality_type = normal +setting_version = 20 +type = quality + +[values] +layer_height = 0.2 + diff --git a/resources/quality/fusion3/fusion3_global_rapid.inst.cfg b/resources/quality/fusion3/fusion3_global_rapid.inst.cfg new file mode 100644 index 0000000000..7acfe1ef4a --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_rapid.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Rapid Quality +version = 4 + +[metadata] +global_quality = True +quality_type = rapid +setting_version = 20 +type = quality + +[values] +layer_height = 0.4 + diff --git a/resources/quality/fusion3/fusion3_global_rough.inst.cfg b/resources/quality/fusion3/fusion3_global_rough.inst.cfg new file mode 100644 index 0000000000..77fbbd332f --- /dev/null +++ b/resources/quality/fusion3/fusion3_global_rough.inst.cfg @@ -0,0 +1,14 @@ +[general] +definition = fusion3 +name = Rough Quality +version = 4 + +[metadata] +global_quality = True +quality_type = rough +setting_version = 20 +type = quality + +[values] +layer_height = 0.5 + diff --git a/resources/variants/fusion3/fusion3_0.4.inst.cfg b/resources/variants/fusion3/fusion3_0.4.inst.cfg new file mode 100644 index 0000000000..777a487695 --- /dev/null +++ b/resources/variants/fusion3/fusion3_0.4.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.4mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.4 + diff --git a/resources/variants/fusion3/fusion3_0.6.inst.cfg b/resources/variants/fusion3/fusion3_0.6.inst.cfg new file mode 100644 index 0000000000..0d032e17f4 --- /dev/null +++ b/resources/variants/fusion3/fusion3_0.6.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.6mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.6 + diff --git a/resources/variants/fusion3/fusion3_0.8.inst.cfg b/resources/variants/fusion3/fusion3_0.8.inst.cfg new file mode 100644 index 0000000000..33f192e528 --- /dev/null +++ b/resources/variants/fusion3/fusion3_0.8.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.8mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.8 + diff --git a/resources/variants/fusion3/fusion3_f410_0.4.inst.cfg b/resources/variants/fusion3/fusion3_f410_0.4.inst.cfg new file mode 100644 index 0000000000..777a487695 --- /dev/null +++ b/resources/variants/fusion3/fusion3_f410_0.4.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.4mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.4 + diff --git a/resources/variants/fusion3/fusion3_f410_0.6.inst.cfg b/resources/variants/fusion3/fusion3_f410_0.6.inst.cfg new file mode 100644 index 0000000000..0d032e17f4 --- /dev/null +++ b/resources/variants/fusion3/fusion3_f410_0.6.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.6mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.6 + diff --git a/resources/variants/fusion3/fusion3_f410_0.8.inst.cfg b/resources/variants/fusion3/fusion3_f410_0.8.inst.cfg new file mode 100644 index 0000000000..33f192e528 --- /dev/null +++ b/resources/variants/fusion3/fusion3_f410_0.8.inst.cfg @@ -0,0 +1,13 @@ +[general] +definition = fusion3_f410 +name = 0.8mm Nozzle +version = 4 + +[metadata] +hardware_type = nozzle +setting_version = 20 +type = variant + +[values] +machine_nozzle_size = 0.8 + From 6abaa44731704ea969d58cbc506adcf510421835 Mon Sep 17 00:00:00 2001 From: jspijker Date: Sun, 4 Dec 2022 13:33:21 +0100 Subject: [PATCH 25/26] Removed UM materials from excluded list These are excluded anyway due to the filament diamter --- resources/definitions/fusion3.def.json | 63 -------------------------- 1 file changed, 63 deletions(-) diff --git a/resources/definitions/fusion3.def.json b/resources/definitions/fusion3.def.json index 08a3103e4e..30c5b6ce93 100644 --- a/resources/definitions/fusion3.def.json +++ b/resources/definitions/fusion3.def.json @@ -109,69 +109,6 @@ "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", - "ultimaker_abs_black", - "ultimaker_abs_blue", - "ultimaker_abs_green", - "ultimaker_abs_grey", - "ultimaker_abs_orange", - "ultimaker_abs_pearl-gold", - "ultimaker_abs_red", - "ultimaker_abs_silver-metallic", - "ultimaker_abs_white", - "ultimaker_abs_yellow", - "ultimaker_bam", - "ultimaker_cpe_black", - "ultimaker_cpe_blue", - "ultimaker_cpe_dark-grey", - "ultimaker_cpe_green", - "ultimaker_cpe_light-grey", - "ultimaker_cpe_plus_black", - "ultimaker_cpe_plus_transparent", - "ultimaker_cpe_plus_white", - "ultimaker_cpe_red", - "ultimaker_cpe_transparent", - "ultimaker_cpe_white", - "ultimaker_cpe_yellow", - "ultimaker_nylon_black", - "ultimaker_nylon_transparent", - "ultimaker_pc_black", - "ultimaker_pc_transparent", - "ultimaker_pc_white", - "ultimaker_petg_black", - "ultimaker_petg_blue", - "ultimaker_petg_blue_translucent", - "ultimaker_petg_green", - "ultimaker_petg_green_translucent", - "ultimaker_petg_grey", - "ultimaker_petg_orange", - "ultimaker_petg_red", - "ultimaker_petg_red_translucent", - "ultimaker_petg_silver", - "ultimaker_petg_transparent", - "ultimaker_petg_white", - "ultimaker_petg_yellow", - "ultimaker_petg_yellow_fluorescent", - "ultimaker_pla_black", - "ultimaker_pla_blue", - "ultimaker_pla_green", - "ultimaker_pla_magenta", - "ultimaker_pla_orange", - "ultimaker_pla_pearl-white", - "ultimaker_pla_red", - "ultimaker_pla_silver-metallic", - "ultimaker_pla_transparent", - "ultimaker_pla_white", - "ultimaker_pla_yellow", - "ultimaker_pp_transparent", - "ultimaker_pva", - "ultimaker_tough_pla_black", - "ultimaker_tough_pla_green", - "ultimaker_tough_pla_red", - "ultimaker_tough_pla_white", - "ultimaker_tpu_black", - "ultimaker_tpu_blue", - "ultimaker_tpu_red", - "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", From f3b9e860687132fe4da55b99f94ea8bccd7f8e44 Mon Sep 17 00:00:00 2001 From: jspijker Date: Sun, 4 Dec 2022 13:52:13 +0100 Subject: [PATCH 26/26] Fixed fan speeds --- resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg | 6 +++--- resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg | 6 +++--- resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg | 6 +++--- resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg | 6 +++--- resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg | 4 ++-- resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg | 4 ++-- 32 files changed, 68 insertions(+), 68 deletions(-) diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg index 986203a593..8c4d149334 100644 --- a/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ABS_fine.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 75 inset_direction = outside_in layer_height = 0.1 diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg index 66fc7b4cd2..ba55ef1e51 100644 --- a/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ABS_good.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 15 inset_direction = outside_in layer_height = 0.3 diff --git a/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg index a96b271aaa..147eacff8a 100644 --- a/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ABS_normal.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 30 inset_direction = outside_in layer_height = 0.2 diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg index bcce323159..2c3cce6e79 100644 --- a/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ASA_fine.inst.cfg @@ -12,9 +12,9 @@ variant = 0.4mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 15 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 75 diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg index 0d05e9acf3..8e09ca3aac 100644 --- a/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ASA_good.inst.cfg @@ -12,9 +12,9 @@ variant = 0.4mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 15 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 20 infill_sparse_density = 15 diff --git a/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg index 170e3452fe..5285f682d4 100644 --- a/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_ASA_normal.inst.cfg @@ -12,9 +12,9 @@ variant = 0.4mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 15 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg index ad746d5b7f..095b258020 100644 --- a/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_CPE_normal.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 11 -cool_min_layer_time_fan_speed_max = 10 +cool_min_layer_time_fan_speed_max = 100 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg index bc1518e866..0a64f12316 100644 --- a/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_PA_normal.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 2.5 -cool_min_layer_time_fan_speed_max = 4 +cool_min_layer_time_fan_speed_max = 40 infill_overlap = 15 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg index af6ebe4bf6..3078794a28 100644 --- a/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_PETG_normal.inst.cfg @@ -12,11 +12,11 @@ variant = 0.4mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 75 -cool_fan_speed_min = 20 +cool_fan_speed_min = 15 cool_min_layer_time = 4 -cool_min_layer_time_fan_speed_max = 7 +cool_min_layer_time_fan_speed_max = 70 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg index 3ad40a48d3..afc5e5546c 100644 --- a/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_PLA_fine.inst.cfg @@ -13,11 +13,11 @@ variant = 0.4mm Nozzle [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 30 +cool_min_layer_time_fan_speed_max = 65 infill_sparse_density = 60 inset_direction = outside_in layer_height_0 = 0.2 diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg index ed7e1bf97a..91327e70f3 100644 --- a/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_PLA_good.inst.cfg @@ -15,9 +15,9 @@ adhesion_type = skirt cool_fan_enabled = True cool_fan_full_at_height = 0.8 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 45 +cool_min_layer_time_fan_speed_max = 65 infill_overlap = 20 infill_pattern = zigzag infill_sparse_density = 15 diff --git a/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg index 23a2fee5a6..3d80124930 100644 --- a/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_PLA_normal.inst.cfg @@ -15,9 +15,9 @@ adhesion_type = skirt cool_fan_enabled = True cool_fan_full_at_height = 0.8 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 45 +cool_min_layer_time_fan_speed_max = 65 infill_overlap = 20 infill_pattern = zigzag infill_sparse_density = 25 diff --git a/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg b/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg index e8b42c9cad..26785389b3 100644 --- a/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.4_TPU_normal.inst.cfg @@ -12,9 +12,9 @@ variant = 0.4mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 -cool_fan_speed_min = 50 +cool_fan_speed_min = 15 cool_min_layer_time = 15 infill_overlap = 20 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg index 50c80e4beb..52196d8b58 100644 --- a/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_ABS_good.inst.cfg @@ -13,11 +13,11 @@ variant = 0.6mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 30 inset_direction = outside_in layer_height = 0.3 diff --git a/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg index aa2cb476af..a92cbb6533 100644 --- a/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_ABS_low.inst.cfg @@ -13,11 +13,11 @@ variant = 0.6mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 30 inset_direction = outside_in layer_height_0 = 0.35 diff --git a/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg index 0605b7e0b9..f46ea15ccf 100644 --- a/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_ASA_good.inst.cfg @@ -12,9 +12,9 @@ variant = 0.6mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 25 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg index 1cf45deea7..1e07555e66 100644 --- a/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_ASA_low.inst.cfg @@ -12,9 +12,9 @@ variant = 0.6mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 25 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg index c65b298824..555f153bdc 100644 --- a/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_CPE_good.inst.cfg @@ -13,11 +13,11 @@ variant = 0.6mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 11 -cool_min_layer_time_fan_speed_max = 10 +cool_min_layer_time_fan_speed_max = 100 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg index c5f707b7c7..9c738cdbda 100644 --- a/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_PA_good.inst.cfg @@ -13,11 +13,11 @@ variant = 0.6mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 2.5 -cool_min_layer_time_fan_speed_max = 4 +cool_min_layer_time_fan_speed_max = 40 infill_overlap = 15 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg index 408b8de63e..79b0a9b436 100644 --- a/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_PETG_good.inst.cfg @@ -12,11 +12,11 @@ variant = 0.6mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 100 -cool_fan_speed_min = 20 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 12 +cool_min_layer_time_fan_speed_max = 20 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg index 253d057ef2..34c80e9925 100644 --- a/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_PLA_good.inst.cfg @@ -15,9 +15,9 @@ adhesion_type = skirt cool_fan_enabled = True cool_fan_full_at_height = 0.8 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 45 +cool_min_layer_time_fan_speed_max = 65 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg b/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg index b5a610a6d2..23eee9899c 100644 --- a/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_PLA_low.inst.cfg @@ -15,9 +15,9 @@ adhesion_type = skirt cool_fan_enabled = True cool_fan_full_at_height = 0.8 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 45 +cool_min_layer_time_fan_speed_max = 65 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg b/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg index f727528f1d..cf35591756 100644 --- a/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.6_TPU_good.inst.cfg @@ -12,9 +12,9 @@ variant = 0.6mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 -cool_fan_speed_min = 50 +cool_fan_speed_min = 15 cool_min_layer_time = 15 infill_overlap = 20 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg index 02b181eb96..30f69fd7b9 100644 --- a/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_ABS_rapid.inst.cfg @@ -13,11 +13,11 @@ variant = 0.8mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 30 inset_direction = outside_in layer_height_0 = 0.4 diff --git a/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg index b1a6a4710a..4aabc09ea8 100644 --- a/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_ABS_rough.inst.cfg @@ -13,11 +13,11 @@ variant = 0.8mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 65 cool_fan_speed_min = 15 cool_min_layer_time = 3 -cool_min_layer_time_fan_speed_max = 6 +cool_min_layer_time_fan_speed_max = 60 infill_sparse_density = 15 inset_direction = outside_in layer_height_0 = 0.5 diff --git a/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg index ce7590920b..8636765f00 100644 --- a/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_ASA_rapid.inst.cfg @@ -12,9 +12,9 @@ variant = 0.8mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 15 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg b/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg index d2903526ba..2ab2496a13 100644 --- a/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_ASA_rough.inst.cfg @@ -12,9 +12,9 @@ variant = 0.8mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 7 +cool_fan_full_layer = 70 cool_fan_speed = 15 -cool_fan_speed_min = 70 +cool_fan_speed_min = 15 cool_min_layer_time = 13 infill_overlap = 15 infill_sparse_density = 30 diff --git a/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg index 2e7722b14c..a26d358db6 100644 --- a/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_CPE_rapid.inst.cfg @@ -13,11 +13,11 @@ variant = 0.8mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 15 -cool_min_layer_time_fan_speed_max = 10 +cool_min_layer_time_fan_speed_max = 100 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg index 899d2aa525..f1f2dbc9db 100644 --- a/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_PA_rapid.inst.cfg @@ -13,11 +13,11 @@ variant = 0.8mm Nozzle [values] adhesion_type = brim cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 cool_fan_speed_min = 15 cool_min_layer_time = 2.5 -cool_min_layer_time_fan_speed_max = 4 +cool_min_layer_time_fan_speed_max = 40 infill_overlap = 15 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg index 75ad9fd345..f2ef5811b5 100644 --- a/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_PETG_rapid.inst.cfg @@ -12,11 +12,11 @@ variant = 0.8mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 75 -cool_fan_speed_min = 20 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 12 +cool_min_layer_time_fan_speed_max = 20 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg index bb682ba7f4..654bd647c9 100644 --- a/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_PLA_rapid.inst.cfg @@ -15,9 +15,9 @@ adhesion_type = skirt cool_fan_enabled = True cool_fan_full_at_height = 0.8 cool_fan_speed = 100 -cool_fan_speed_min = 65 +cool_fan_speed_min = 15 cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 45 +cool_min_layer_time_fan_speed_max = 65 infill_overlap = 20 infill_sparse_density = 30 inset_direction = outside_in diff --git a/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg b/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg index 156cd71777..8640e104c3 100644 --- a/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg +++ b/resources/quality/fusion3/fusion3_0.8_TPU_rapid.inst.cfg @@ -12,9 +12,9 @@ variant = 0.8mm Nozzle [values] cool_fan_enabled = True -cool_fan_full_layer = 6 +cool_fan_full_layer = 60 cool_fan_speed = 50 -cool_fan_speed_min = 50 +cool_fan_speed_min = 15 cool_min_layer_time = 20 infill_overlap = 20 infill_sparse_density = 30