three-slicer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +44 -0
  3. package/components/README.md +39 -0
  4. package/components/dist/SettingsPanel.js +180 -0
  5. package/components/styles.css +84 -0
  6. package/data/README.md +22 -0
  7. package/data/config-schema-builddump.json +12921 -0
  8. package/data/config-schema.json +12685 -0
  9. package/data/invalidation-map.json +631 -0
  10. package/data/toggle-rules.json +2277 -0
  11. package/data/ui-tree.json +1586 -0
  12. package/engine/README.md +52 -0
  13. package/engine/examples/headless.mjs +37 -0
  14. package/engine/index.d.ts +29 -0
  15. package/engine/index.js +45 -0
  16. package/engine/src/settings.js +130 -0
  17. package/engine/src/slicer.worker.js +73 -0
  18. package/engine/src/slicer_core.js +0 -0
  19. package/engine/src/slicer_core.mt.js +0 -0
  20. package/engine/src/toggle_eval.js +78 -0
  21. package/package.json +74 -0
  22. package/viewer/README.md +68 -0
  23. package/viewer/dist/Viewport.js +1108 -0
  24. package/viewer/dist/make_worker.js +9 -0
  25. package/viewer/dist/model_loaders.js +144 -0
  26. package/viewer/dist/toolpath_gpu.js +386 -0
  27. package/viewer/src/Viewport.jsx +1353 -0
  28. package/viewer/src/assets/add.svg +1 -0
  29. package/viewer/src/assets/arrange.svg +1 -0
  30. package/viewer/src/assets/boolean.svg +1 -0
  31. package/viewer/src/assets/cut.svg +1 -0
  32. package/viewer/src/assets/delete.svg +1 -0
  33. package/viewer/src/assets/deleteall.svg +1 -0
  34. package/viewer/src/assets/duplicate.svg +1 -0
  35. package/viewer/src/assets/measure.svg +1 -0
  36. package/viewer/src/assets/mmu.svg +1 -0
  37. package/viewer/src/assets/move.svg +1 -0
  38. package/viewer/src/assets/negative.svg +1 -0
  39. package/viewer/src/assets/onbed.svg +1 -0
  40. package/viewer/src/assets/open.svg +1 -0
  41. package/viewer/src/assets/orient.svg +1 -0
  42. package/viewer/src/assets/paint.svg +1 -0
  43. package/viewer/src/assets/rotate.svg +1 -0
  44. package/viewer/src/assets/scale.svg +1 -0
  45. package/viewer/src/assets/seam.svg +1 -0
  46. package/viewer/src/assets/split.svg +1 -0
  47. package/viewer/src/assets/textmark.svg +1 -0
  48. package/viewer/src/assets/varlayer.svg +1 -0
  49. package/viewer/src/icons.js +23 -0
  50. package/viewer/src/make_worker.js +9 -0
  51. package/viewer/src/model_loaders.js +178 -0
  52. package/viewer/src/shadow_host.jsx +30 -0
  53. package/viewer/src/toolpath_gpu.js +430 -0
  54. package/viewer/styles.css +231 -0
@@ -0,0 +1,2277 @@
1
+ {
2
+ "check_chamber_temperature": {
3
+ "locals": {
4
+ "support_chamber_temp_control": "GUI::wxGetApp().preset_bundle->printers.get_selected_preset().config.opt_bool(\"support_chamber_temp_control\")"
5
+ },
6
+ "rules": [],
7
+ "stats": {
8
+ "toggle_calls_in_source": 0,
9
+ "rules_extracted": 0
10
+ }
11
+ },
12
+ "update_print_fff_config": {
13
+ "locals": {
14
+ "is_object_config": "(!is_global_config && !is_plate_config)",
15
+ "layer_height": "config->opt_float(\"layer_height\")",
16
+ "max_lh": "gpreset.config.opt_float(\"max_layer_height\",0)",
17
+ "timelapse_type": "config->opt_enum<TimelapseType>(\"timelapse_type\")",
18
+ "answer": "show_spiral_mode_settings_dialog(is_object_config)",
19
+ "has_wipe_tower": "filament_cnt > 1 && config->opt_bool(\"enable_prime_tower\")",
20
+ "wipe_tower_wall_type": "config->opt_enum<WipeTowerWallType>(\"wipe_tower_wall_type\")",
21
+ "support_type": "config->opt_enum<SupportType>(\"support_type\")",
22
+ "support_style": "config->opt_enum<SupportMaterialStyle>(\"support_style\")",
23
+ "have_arachne": "config->opt_enum<PerimeterGeneratorType>(\"wall_generator\") == PerimeterGeneratorType::Arachne"
24
+ },
25
+ "rules": [],
26
+ "stats": {
27
+ "toggle_calls_in_source": 0,
28
+ "rules_extracted": 0
29
+ }
30
+ },
31
+ "toggle_print_fff_options": {
32
+ "locals": {
33
+ "gcf_is_marlin_firmware": "gcflavor == GCodeFlavor::gcfMarlinFirmware",
34
+ "gcf_is_klipper": "gcflavor == GCodeFlavor::gcfKlipper",
35
+ "have_volumetric_extrusion_rate_slope": "config->option<ConfigOptionFloat>(\"max_volumetric_extrusion_rate_slope\")->value > 0",
36
+ "have_perimeters": "config->opt_int(\"wall_loops\") > 0",
37
+ "have_infill": "config->option<ConfigOptionPercent>(\"sparse_infill_density\")->value > 0",
38
+ "have_combined_infill": "config->opt_bool(\"infill_combination\") && have_infill",
39
+ "have_multiline_infill_pattern": "pattern == ipGyroid || pattern == ipGrid || pattern == ipRectilinear || pattern == ipTpmsD || pattern == ipTpmsFK || pattern == ipCrossHatch || pattern == ipHoneycomb || pattern == ipLateralLattice || pattern == ipLateralHoneycomb || pattern == ipConcentric || pattern == ipCubic || pattern == ipStars || pattern == ipAlignedRectilinear || pattern == ipLightning || pattern == ip3DHoneycomb || pattern == ipAdaptiveCubic || pattern == ipSupportCubic|| pattern == ipTriangles || pattern == ipQuarterCubic|| pattern == ipArchimedeanChords || pattern == ipHilbertCurve || pattern == ipOctagramSpiral",
40
+ "infill_anchor": "config->opt_enum<InfillPattern>(\"sparse_infill_pattern\") != ipLine",
41
+ "has_infill_anchors": "infill_anchor && config->option<ConfigOptionFloatOrPercent>(\"infill_anchor_max\")->value > 0",
42
+ "is_cross_zag": "config->option<ConfigOptionEnum<InfillPattern>>(\"sparse_infill_pattern\")->value == InfillPattern::ipCrossZag",
43
+ "is_locked_zig": "config->option<ConfigOptionEnum<InfillPattern>>(\"sparse_infill_pattern\")->value == InfillPattern::ipLockedZag",
44
+ "is_zig_zag": "config->option<ConfigOptionEnum<InfillPattern>>(\"sparse_infill_pattern\")->value == InfillPattern::ipZigZag",
45
+ "has_spiral_vase": "config->opt_bool(\"spiral_mode\")",
46
+ "has_top_shell": "config->opt_int(\"top_shell_layers\") > 0 || (has_spiral_vase && config->opt_int(\"bottom_shell_layers\") > 1)",
47
+ "has_bottom_shell": "config->opt_int(\"bottom_shell_layers\") > 0",
48
+ "has_solid_infill": "has_top_shell || has_bottom_shell",
49
+ "has_top_surface_expansion": "config->opt_float(\"top_surface_expansion\") > 0",
50
+ "is_centered_pattern": "[](InfillPattern p) { return p == InfillPattern::ipArchimedeanChords || p == InfillPattern::ipOctagramSpiral; }",
51
+ "is_top_centered": "is_centered_pattern(config->option<ConfigOptionEnum<InfillPattern>>(\"top_surface_pattern\")->value)",
52
+ "is_bottom_centered": "is_centered_pattern(config->option<ConfigOptionEnum<InfillPattern>>(\"bottom_surface_pattern\")->value)",
53
+ "has_centered_surface": "(has_top_shell && is_top_centered) || (has_bottom_shell && is_bottom_centered)",
54
+ "is_internal_infill_separable": "is_separable_infill_pattern(config->option<ConfigOptionEnum<InfillPattern>>(\"sparse_infill_pattern\")->value) || config->opt_string(\"sparse_infill_rotate_template\") != \"\" || config->opt_string(\"solid_infill_rotate_template\") != \"\"",
55
+ "is_centered_fill": "[](InfillPattern p) { return p == ipConcentric || p == ipArchimedeanChords || p == ipOctagramSpiral; }",
56
+ "have_default_acceleration": "config->opt_float_nullable(\"default_acceleration\", variant_index) > 0",
57
+ "have_default_jerk": "config->has(\"default_jerk\") && config->opt_float_nullable(\"default_jerk\", variant_index) > 0",
58
+ "have_skirt": "config->opt_int(\"skirt_loops\") > 0",
59
+ "have_brim": "(config->opt_enum<BrimType>(\"brim_type\") != btNoBrim)",
60
+ "have_brim_width": "(config->opt_enum<BrimType>(\"brim_type\") != btNoBrim) && config->opt_enum<BrimType>(\"brim_type\") != btAutoBrim && config->opt_enum<BrimType>(\"brim_type\") != btPainted",
61
+ "have_brim_ear": "(config->opt_enum<BrimType>(\"brim_type\") == btEar)",
62
+ "brim_width": "config->opt_float(\"brim_width\")",
63
+ "have_raft": "config->opt_int(\"raft_layers\") > 0",
64
+ "have_support_material": "config->opt_bool(\"enable_support\") || have_raft",
65
+ "have_support_interface": "config->opt_int(\"support_interface_top_layers\") > 0 || config->opt_int(\"support_interface_bottom_layers\") > 0",
66
+ "have_support_soluble": "have_support_material && config->opt_float(\"support_top_z_distance\") == 0",
67
+ "support_style": "config->opt_enum<SupportMaterialStyle>(\"support_style\")",
68
+ "support_is_tree": "config->opt_bool(\"enable_support\") && is_tree(support_type)",
69
+ "support_is_organic": "support_is_tree && (support_style == smsTreeOrganic || support_style == smsDefault)",
70
+ "support_is_normal_tree": "support_is_tree && !support_is_organic",
71
+ "can_ironing_support": "have_raft || (have_support_material && config->opt_int(\"support_interface_top_layers\") > 0)",
72
+ "has_support_ironing": "can_ironing_support && config->opt_bool(\"support_ironing\")",
73
+ "have_skirt_height": "have_skirt && // (config->opt_int(\"skirt_height\") > 1 || config->opt_enum<DraftShield>(\"draft_shield\") != dsEnabled)",
74
+ "has_ironing": "(config->opt_enum<IroningType>(\"ironing_type\") != IroningType::NoIroning)",
75
+ "has_rectilinear_ironing": "(config->opt_enum<InfillPattern>(\"ironing_pattern\") == InfillPattern::ipRectilinear)",
76
+ "has_zaa": "config->opt_bool(\"zaa_enabled\")",
77
+ "have_sequential_printing": "(config->opt_enum<PrintSequence>(\"print_sequence\") == PrintSequence::ByObject)",
78
+ "bSEMM": "preset_bundle->printers.get_edited_preset().config.opt_bool(\"single_extruder_multi_material\")",
79
+ "supports_wipe_tower_2": "!is_BBL_Printer && preset_bundle->printers.get_edited_preset().config.opt_enum<WipeTowerType>(\"wipe_tower_type\") == WipeTowerType::Type2",
80
+ "have_ooze_prevention": "config->opt_bool(\"ooze_prevention\")",
81
+ "have_prime_tower": "config->opt_bool(\"enable_prime_tower\")",
82
+ "purge_in_primetower": "preset_bundle->printers.get_edited_preset().config.opt_bool(\"purge_in_prime_tower\")",
83
+ "have_rib_wall": "(wipe_tower_wall_type == WipeTowerWallType::wtwRib)&&have_prime_tower",
84
+ "have_avoid_crossing_perimeters": "config->opt_bool(\"reduce_crossing_wall\")",
85
+ "has_set_other_flow_ratios": "config->opt_bool(\"set_other_flow_ratios\")",
86
+ "has_overhang_speed": "config->opt_bool_nullable(\"enable_overhang_speed\", variant_index)",
87
+ "has_fuzzy_skin": "config->opt_enum<FuzzySkinType>(\"fuzzy_skin\") != FuzzySkinType::Disabled_fuzzy",
88
+ "is_ripple": "fuzzy_skin_noise_type == NoiseType::Ripple",
89
+ "have_arachne": "config->opt_enum<PerimeterGeneratorType>(\"wall_generator\") == PerimeterGeneratorType::Arachne",
90
+ "is_role_based_wipe_speed": "config->opt_bool(\"role_based_wipe_speed\")",
91
+ "have_make_overhang_printable": "config->opt_bool(\"make_overhang_printable\")",
92
+ "has_detect_overhang_wall": "config->opt_bool(\"detect_overhang_wall\")",
93
+ "has_overhang_reverse": "config->opt_bool(\"overhang_reverse\")",
94
+ "has_overhang_reverse_internal_only": "config->opt_bool(\"overhang_reverse_internal_only\")",
95
+ "have_small_area_infill_flow_compensation": "config->opt_bool(\"small_area_infill_flow_compensation\")",
96
+ "has_seam_slope": "!has_spiral_vase && config->opt_enum<SeamScarfType>(\"seam_slope_type\") != SeamScarfType::None",
97
+ "use_beam_interlocking": "config->opt_bool(\"interlocking_beam\")",
98
+ "lattice_options": "config->opt_enum<InfillPattern>(\"sparse_infill_pattern\") == InfillPattern::ipLateralLattice",
99
+ "lightning_options": "config->opt_enum<InfillPattern>(\"sparse_infill_pattern\") == InfillPattern::ipLightning",
100
+ "FillAdaptive": "(pattern == InfillPattern::ipAdaptiveCubic || pattern == InfillPattern::ipSupportCubic)"
101
+ },
102
+ "rules": [
103
+ {
104
+ "fields": [
105
+ "extra_perimeters_on_overhangs",
106
+ "ensure_vertical_shell_thickness",
107
+ "detect_thin_wall",
108
+ "detect_overhang_wall",
109
+ "seam_position",
110
+ "staggered_inner_seams",
111
+ "wall_sequence",
112
+ "outer_wall_line_width"
113
+ ],
114
+ "enable_if": "have_perimeters",
115
+ "kind": "field",
116
+ "line": 645
117
+ },
118
+ {
119
+ "fields": [
120
+ "inner_wall_speed",
121
+ "outer_wall_speed",
122
+ "small_perimeter_speed",
123
+ "small_perimeter_threshold"
124
+ ],
125
+ "enable_if": "have_perimeters, variant_index",
126
+ "kind": "field",
127
+ "line": 648
128
+ },
129
+ {
130
+ "fields": [
131
+ "sparse_infill_pattern",
132
+ "infill_combination",
133
+ "fill_multiline",
134
+ "infill_direction",
135
+ "minimum_sparse_infill_area",
136
+ "sparse_infill_filament_id",
137
+ "infill_anchor",
138
+ "infill_anchor_max",
139
+ "infill_shift_step",
140
+ "sparse_infill_rotate_template",
141
+ "symmetric_infill_y_axis"
142
+ ],
143
+ "enable_if": "have_infill",
144
+ "kind": "line",
145
+ "line": 653
146
+ },
147
+ {
148
+ "fields": [
149
+ "skeleton_infill_density",
150
+ "skin_infill_density",
151
+ "infill_lock_depth",
152
+ "skin_infill_depth",
153
+ "skin_infill_line_width",
154
+ "skeleton_infill_line_width"
155
+ ],
156
+ "enable_if": "is_locked_zig",
157
+ "kind": "line",
158
+ "line": 694
159
+ },
160
+ {
161
+ "fields": [
162
+ "infill_direction",
163
+ "sparse_infill_line_width",
164
+ "gap_fill_target",
165
+ "filter_out_gap_fill",
166
+ "infill_wall_overlap",
167
+ "bridge_angle",
168
+ "internal_bridge_angle",
169
+ "relative_bridge_angle",
170
+ "solid_infill_direction",
171
+ "solid_infill_rotate_template",
172
+ "internal_solid_infill_pattern",
173
+ "internal_solid_filament_id",
174
+ "top_surface_filament_id",
175
+ "bottom_surface_filament_id"
176
+ ],
177
+ "enable_if": "have_infill || has_solid_infill",
178
+ "kind": "field",
179
+ "line": 746
180
+ },
181
+ {
182
+ "fields": [
183
+ "sparse_infill_speed",
184
+ "bridge_speed",
185
+ "internal_bridge_speed"
186
+ ],
187
+ "enable_if": "have_infill || has_solid_infill, variant_index",
188
+ "kind": "field",
189
+ "line": 751
190
+ },
191
+ {
192
+ "fields": [
193
+ "outer_wall_acceleration",
194
+ "inner_wall_acceleration",
195
+ "initial_layer_acceleration",
196
+ "initial_layer_travel_acceleration",
197
+ "top_surface_acceleration",
198
+ "travel_acceleration",
199
+ "bridge_acceleration",
200
+ "sparse_infill_acceleration",
201
+ "internal_solid_infill_acceleration"
202
+ ],
203
+ "enable_if": "have_default_acceleration, variant_index",
204
+ "kind": "field",
205
+ "line": 765
206
+ },
207
+ {
208
+ "fields": [
209
+ "outer_wall_jerk",
210
+ "inner_wall_jerk",
211
+ "initial_layer_jerk",
212
+ "initial_layer_travel_jerk",
213
+ "top_surface_jerk",
214
+ "travel_jerk",
215
+ "infill_jerk"
216
+ ],
217
+ "enable_if": "false, variant_index",
218
+ "kind": "line",
219
+ "line": 779
220
+ },
221
+ {
222
+ "fields": [
223
+ "outer_wall_jerk",
224
+ "inner_wall_jerk",
225
+ "initial_layer_jerk",
226
+ "initial_layer_travel_jerk",
227
+ "top_surface_jerk",
228
+ "travel_jerk",
229
+ "infill_jerk"
230
+ ],
231
+ "enable_if": "true, variant_index",
232
+ "kind": "line",
233
+ "line": 785
234
+ },
235
+ {
236
+ "fields": [
237
+ "skirt_type",
238
+ "min_skirt_length",
239
+ "skirt_distance",
240
+ "skirt_start_angle",
241
+ "skirt_speed",
242
+ "draft_shield"
243
+ ],
244
+ "enable_if": "have_skirt",
245
+ "kind": "field",
246
+ "line": 794
247
+ },
248
+ {
249
+ "fields": [
250
+ "support_style",
251
+ "support_base_pattern",
252
+ "support_base_pattern_spacing",
253
+ "support_expansion",
254
+ "support_angle",
255
+ "support_interface_pattern",
256
+ "support_interface_top_layers",
257
+ "support_interface_bottom_layers",
258
+ "bridge_no_support",
259
+ "max_bridge_length",
260
+ "support_top_z_distance",
261
+ "support_bottom_z_distance",
262
+ "support_type",
263
+ "support_on_build_plate_only",
264
+ "support_critical_regions_only",
265
+ "support_interface_not_for_body",
266
+ "support_object_xy_distance",
267
+ "support_object_first_layer_gap",
268
+ "independent_support_layer_height"
269
+ ],
270
+ "enable_if": "have_support_material",
271
+ "kind": "field",
272
+ "line": 828
273
+ },
274
+ {
275
+ "fields": [
276
+ "tree_support_branch_angle",
277
+ "tree_support_branch_distance",
278
+ "tree_support_branch_diameter",
279
+ "tree_support_auto_brim",
280
+ "tree_support_brim_width"
281
+ ],
282
+ "enable_if": "support_is_normal_tree",
283
+ "kind": "line",
284
+ "line": 846
285
+ },
286
+ {
287
+ "fields": [
288
+ "tree_support_branch_angle_organic",
289
+ "tree_support_branch_distance_organic",
290
+ "tree_support_branch_diameter_organic",
291
+ "tree_support_angle_slow",
292
+ "tree_support_tip_diameter",
293
+ "tree_support_top_rate",
294
+ "tree_support_branch_diameter_angle"
295
+ ],
296
+ "enable_if": "support_is_organic",
297
+ "kind": "line",
298
+ "line": 849
299
+ },
300
+ {
301
+ "fields": [
302
+ "support_interface_filament",
303
+ "support_interface_loop_pattern",
304
+ "support_bottom_interface_spacing"
305
+ ],
306
+ "enable_if": "have_support_material && have_support_interface",
307
+ "kind": "field",
308
+ "line": 861
309
+ },
310
+ {
311
+ "fields": [
312
+ "support_ironing_pattern",
313
+ "support_ironing_flow",
314
+ "support_ironing_spacing"
315
+ ],
316
+ "enable_if": "has_support_ironing",
317
+ "kind": "line",
318
+ "line": 868
319
+ },
320
+ {
321
+ "fields": [
322
+ "small_support_perimeter_speed",
323
+ "small_support_perimeter_threshold"
324
+ ],
325
+ "enable_if": "config->opt_bool(\"enable_support\")",
326
+ "kind": "field",
327
+ "line": 880
328
+ },
329
+ {
330
+ "fields": [
331
+ "ironing_pattern",
332
+ "ironing_flow",
333
+ "ironing_spacing",
334
+ "ironing_angle",
335
+ "ironing_inset",
336
+ "ironing_angle_fixed"
337
+ ],
338
+ "enable_if": "has_ironing",
339
+ "kind": "line",
340
+ "line": 899
341
+ },
342
+ {
343
+ "fields": [
344
+ "ironing_angle",
345
+ "ironing_angle_fixed"
346
+ ],
347
+ "enable_if": "has_ironing && has_rectilinear_ironing",
348
+ "kind": "field",
349
+ "line": 902
350
+ },
351
+ {
352
+ "fields": [
353
+ "zaa_minimize_perimeter_height",
354
+ "zaa_min_z",
355
+ "zaa_dont_alternate_fill_direction",
356
+ "ironing_expansion"
357
+ ],
358
+ "enable_if": "has_zaa",
359
+ "kind": "line",
360
+ "line": 908
361
+ },
362
+ {
363
+ "fields": [
364
+ "prime_tower_width",
365
+ "prime_tower_brim_width",
366
+ "prime_tower_skip_points",
367
+ "wipe_tower_wall_type",
368
+ "prime_tower_infill_gap",
369
+ "prime_tower_enable_framework",
370
+ "enable_tower_interface_features"
371
+ ],
372
+ "enable_if": "have_prime_tower",
373
+ "kind": "line",
374
+ "line": 929
375
+ },
376
+ {
377
+ "fields": [
378
+ "wipe_tower_rotation_angle",
379
+ "wipe_tower_cone_angle",
380
+ "wipe_tower_extra_spacing",
381
+ "wipe_tower_max_purge_speed",
382
+ "wipe_tower_bridging",
383
+ "wipe_tower_extra_flow",
384
+ "wipe_tower_no_sparse_layers"
385
+ ],
386
+ "enable_if": "have_prime_tower && supports_wipe_tower_2",
387
+ "kind": "line",
388
+ "line": 937
389
+ },
390
+ {
391
+ "fields": [
392
+ "flush_into_infill",
393
+ "flush_into_support",
394
+ "flush_into_objects"
395
+ ],
396
+ "enable_if": "have_prime_tower",
397
+ "kind": "field",
398
+ "line": 955
399
+ },
400
+ {
401
+ "fields": [
402
+ "first_layer_flow_ratio",
403
+ "outer_wall_flow_ratio",
404
+ "inner_wall_flow_ratio",
405
+ "overhang_flow_ratio",
406
+ "sparse_infill_flow_ratio",
407
+ "internal_solid_infill_flow_ratio",
408
+ "gap_fill_flow_ratio",
409
+ "support_flow_ratio",
410
+ "support_interface_flow_ratio"
411
+ ],
412
+ "enable_if": "has_set_other_flow_ratios",
413
+ "kind": "line",
414
+ "line": 962
415
+ },
416
+ {
417
+ "fields": [
418
+ "overhang_1_4_speed",
419
+ "overhang_2_4_speed",
420
+ "overhang_3_4_speed",
421
+ "overhang_4_4_speed"
422
+ ],
423
+ "enable_if": "has_overhang_speed, variant_index",
424
+ "kind": "line",
425
+ "line": 966
426
+ },
427
+ {
428
+ "fields": [
429
+ "fuzzy_skin_mode",
430
+ "fuzzy_skin_noise_type",
431
+ "fuzzy_skin_point_distance",
432
+ "fuzzy_skin_thickness",
433
+ "fuzzy_skin_first_layer"
434
+ ],
435
+ "enable_if": "has_fuzzy_skin",
436
+ "kind": "line",
437
+ "line": 979
438
+ },
439
+ {
440
+ "fields": [
441
+ "wall_transition_length",
442
+ "wall_transition_filter_deviation",
443
+ "wall_transition_angle",
444
+ "min_feature_size",
445
+ "min_length_factor",
446
+ "min_bead_width",
447
+ "wall_distribution_count",
448
+ "initial_layer_min_bead_width",
449
+ "wall_maximum_resolution",
450
+ "wall_maximum_deviation"
451
+ ],
452
+ "enable_if": "have_arachne",
453
+ "kind": "line",
454
+ "line": 993
455
+ },
456
+ {
457
+ "fields": [
458
+ "accel_to_decel_enable",
459
+ "accel_to_decel_factor"
460
+ ],
461
+ "enable_if": "gcf_is_klipper",
462
+ "kind": "line",
463
+ "line": 1002
464
+ },
465
+ {
466
+ "fields": [
467
+ "hole_to_polyhole_threshold",
468
+ "hole_to_polyhole_twisted",
469
+ "hole_to_polyhole_max_edges"
470
+ ],
471
+ "enable_if": "config->opt_bool(\"hole_to_polyhole\")",
472
+ "kind": "line",
473
+ "line": 1013
474
+ },
475
+ {
476
+ "fields": [
477
+ "lateral_lattice_angle_1",
478
+ "lateral_lattice_angle_2"
479
+ ],
480
+ "enable_if": "lattice_options",
481
+ "kind": "line",
482
+ "line": 1058
483
+ },
484
+ {
485
+ "fields": [
486
+ "lightning_overhang_angle",
487
+ "lightning_prune_angle",
488
+ "lightning_straightening_angle"
489
+ ],
490
+ "enable_if": "lightning_options",
491
+ "kind": "line",
492
+ "line": 1062
493
+ },
494
+ {
495
+ "fields": [
496
+ "enable_arc_fitting"
497
+ ],
498
+ "enable_if": "!have_volumetric_extrusion_rate_slope",
499
+ "kind": "field",
500
+ "line": 634
501
+ },
502
+ {
503
+ "fields": [
504
+ "max_volumetric_extrusion_rate_slope_segment_length"
505
+ ],
506
+ "enable_if": "have_volumetric_extrusion_rate_slope",
507
+ "kind": "line",
508
+ "line": 635
509
+ },
510
+ {
511
+ "fields": [
512
+ "extrusion_rate_smoothing_external_perimeter_only"
513
+ ],
514
+ "enable_if": "have_volumetric_extrusion_rate_slope",
515
+ "kind": "line",
516
+ "line": 636
517
+ },
518
+ {
519
+ "fields": [
520
+ "infill_combination_max_layer_height"
521
+ ],
522
+ "enable_if": "have_combined_infill",
523
+ "kind": "line",
524
+ "line": 658
525
+ },
526
+ {
527
+ "fields": [
528
+ "gyroid_optimized"
529
+ ],
530
+ "enable_if": "have_infill && pattern == ipGyroid",
531
+ "kind": "line",
532
+ "line": 667
533
+ },
534
+ {
535
+ "fields": [
536
+ "fill_multiline"
537
+ ],
538
+ "enable_if": "have_multiline_infill_pattern",
539
+ "kind": "field",
540
+ "line": 671
541
+ },
542
+ {
543
+ "fields": [
544
+ "infill_anchor_max"
545
+ ],
546
+ "enable_if": "infill_anchor",
547
+ "kind": "field",
548
+ "line": 681
549
+ },
550
+ {
551
+ "fields": [
552
+ "infill_anchor"
553
+ ],
554
+ "enable_if": "has_infill_anchors",
555
+ "kind": "field",
556
+ "line": 685
557
+ },
558
+ {
559
+ "fields": [
560
+ "infill_shift_step"
561
+ ],
562
+ "enable_if": "is_cross_zag || is_locked_zig",
563
+ "kind": "line",
564
+ "line": 692
565
+ },
566
+ {
567
+ "fields": [
568
+ "symmetric_infill_y_axis"
569
+ ],
570
+ "enable_if": "is_zig_zag || is_cross_zag || is_locked_zig",
571
+ "kind": "line",
572
+ "line": 699
573
+ },
574
+ {
575
+ "fields": [
576
+ "spiral_mode_smooth"
577
+ ],
578
+ "enable_if": "has_spiral_vase",
579
+ "kind": "line",
580
+ "line": 702
581
+ },
582
+ {
583
+ "fields": [
584
+ "spiral_mode_max_xy_smoothing"
585
+ ],
586
+ "enable_if": "has_spiral_vase && config->opt_bool(\"spiral_mode_smooth\")",
587
+ "kind": "line",
588
+ "line": 703
589
+ },
590
+ {
591
+ "fields": [
592
+ "spiral_starting_flow_ratio"
593
+ ],
594
+ "enable_if": "has_spiral_vase",
595
+ "kind": "line",
596
+ "line": 704
597
+ },
598
+ {
599
+ "fields": [
600
+ "spiral_finishing_flow_ratio"
601
+ ],
602
+ "enable_if": "has_spiral_vase",
603
+ "kind": "line",
604
+ "line": 705
605
+ },
606
+ {
607
+ "fields": [
608
+ "top_surface_pattern"
609
+ ],
610
+ "enable_if": "has_top_shell",
611
+ "kind": "field",
612
+ "line": 709
613
+ },
614
+ {
615
+ "fields": [
616
+ "bottom_surface_pattern"
617
+ ],
618
+ "enable_if": "has_bottom_shell",
619
+ "kind": "field",
620
+ "line": 710
621
+ },
622
+ {
623
+ "fields": [
624
+ "top_surface_density"
625
+ ],
626
+ "enable_if": "has_top_shell",
627
+ "kind": "field",
628
+ "line": 711
629
+ },
630
+ {
631
+ "fields": [
632
+ "bottom_surface_density"
633
+ ],
634
+ "enable_if": "has_bottom_shell",
635
+ "kind": "field",
636
+ "line": 712
637
+ },
638
+ {
639
+ "fields": [
640
+ "top_layer_direction"
641
+ ],
642
+ "enable_if": "has_top_shell",
643
+ "kind": "field",
644
+ "line": 713
645
+ },
646
+ {
647
+ "fields": [
648
+ "bottom_layer_direction"
649
+ ],
650
+ "enable_if": "has_bottom_shell",
651
+ "kind": "field",
652
+ "line": 714
653
+ },
654
+ {
655
+ "fields": [
656
+ "top_surface_expansion"
657
+ ],
658
+ "enable_if": "has_top_shell",
659
+ "kind": "line",
660
+ "line": 716
661
+ },
662
+ {
663
+ "fields": [
664
+ "top_surface_expansion_margin"
665
+ ],
666
+ "enable_if": "has_top_shell",
667
+ "kind": "line",
668
+ "line": 717
669
+ },
670
+ {
671
+ "fields": [
672
+ "top_surface_expansion_margin"
673
+ ],
674
+ "enable_if": "has_top_surface_expansion",
675
+ "kind": "field",
676
+ "line": 719
677
+ },
678
+ {
679
+ "fields": [
680
+ "top_surface_expansion_direction"
681
+ ],
682
+ "enable_if": "has_top_shell",
683
+ "kind": "line",
684
+ "line": 720
685
+ },
686
+ {
687
+ "fields": [
688
+ "top_surface_expansion_direction"
689
+ ],
690
+ "enable_if": "has_top_surface_expansion",
691
+ "kind": "field",
692
+ "line": 721
693
+ },
694
+ {
695
+ "fields": [
696
+ "center_of_surface_pattern"
697
+ ],
698
+ "enable_if": "has_centered_surface",
699
+ "kind": "line",
700
+ "line": 733
701
+ },
702
+ {
703
+ "fields": [
704
+ "separated_infills"
705
+ ],
706
+ "enable_if": "is_internal_infill_separable",
707
+ "kind": "line",
708
+ "line": 739
709
+ },
710
+ {
711
+ "fields": [
712
+ "top_shell_thickness"
713
+ ],
714
+ "enable_if": "! has_spiral_vase && has_top_shell",
715
+ "kind": "field",
716
+ "line": 754
717
+ },
718
+ {
719
+ "fields": [
720
+ "bottom_shell_thickness"
721
+ ],
722
+ "enable_if": "! has_spiral_vase && has_bottom_shell",
723
+ "kind": "field",
724
+ "line": 755
725
+ },
726
+ {
727
+ "fields": [
728
+ "gap_infill_speed"
729
+ ],
730
+ "enable_if": "have_perimeters, variant_index",
731
+ "kind": "field",
732
+ "line": 758
733
+ },
734
+ {
735
+ "fields": [
736
+ "top_surface_line_width"
737
+ ],
738
+ "enable_if": "has_top_shell",
739
+ "kind": "field",
740
+ "line": 760
741
+ },
742
+ {
743
+ "fields": [
744
+ "top_surface_speed"
745
+ ],
746
+ "enable_if": "has_top_shell, variant_index",
747
+ "kind": "field",
748
+ "line": 761
749
+ },
750
+ {
751
+ "fields": [
752
+ "default_junction_deviation"
753
+ ],
754
+ "enable_if": "gcf_is_marlin_firmware, variant_index",
755
+ "kind": "line",
756
+ "line": 775
757
+ },
758
+ {
759
+ "fields": [
760
+ "default_junction_deviation"
761
+ ],
762
+ "enable_if": "true, variant_index",
763
+ "kind": "field",
764
+ "line": 777
765
+ },
766
+ {
767
+ "fields": [
768
+ "default_jerk"
769
+ ],
770
+ "enable_if": "false, variant_index",
771
+ "kind": "field",
772
+ "line": 778
773
+ },
774
+ {
775
+ "fields": [
776
+ "default_junction_deviation"
777
+ ],
778
+ "enable_if": "false, variant_index",
779
+ "kind": "field",
780
+ "line": 782
781
+ },
782
+ {
783
+ "fields": [
784
+ "default_jerk"
785
+ ],
786
+ "enable_if": "true, variant_index",
787
+ "kind": "field",
788
+ "line": 783
789
+ },
790
+ {
791
+ "fields": [
792
+ "skirt_height"
793
+ ],
794
+ "enable_if": "have_skirt && config->opt_enum<DraftShield>(\"draft_shield\") != dsEnabled",
795
+ "kind": "field",
796
+ "line": 792
797
+ },
798
+ {
799
+ "fields": [
800
+ "single_loop_draft_shield"
801
+ ],
802
+ "enable_if": "have_skirt",
803
+ "kind": "line",
804
+ "line": 793
805
+ },
806
+ {
807
+ "fields": [
808
+ "brim_object_gap"
809
+ ],
810
+ "enable_if": "have_brim",
811
+ "kind": "field",
812
+ "line": 798
813
+ },
814
+ {
815
+ "fields": [
816
+ "brim_use_efc_outline"
817
+ ],
818
+ "enable_if": "have_brim",
819
+ "kind": "field",
820
+ "line": 799
821
+ },
822
+ {
823
+ "fields": [
824
+ "combine_brims"
825
+ ],
826
+ "enable_if": "have_brim",
827
+ "kind": "field",
828
+ "line": 800
829
+ },
830
+ {
831
+ "fields": [
832
+ "brim_width"
833
+ ],
834
+ "enable_if": "have_brim_width",
835
+ "kind": "field",
836
+ "line": 803
837
+ },
838
+ {
839
+ "fields": [
840
+ "brim_flow_ratio"
841
+ ],
842
+ "enable_if": "have_brim",
843
+ "kind": "field",
844
+ "line": 804
845
+ },
846
+ {
847
+ "fields": [
848
+ "outer_wall_filament_id"
849
+ ],
850
+ "enable_if": "have_perimeters || have_brim",
851
+ "kind": "field",
852
+ "line": 806
853
+ },
854
+ {
855
+ "fields": [
856
+ "inner_wall_filament_id"
857
+ ],
858
+ "enable_if": "have_perimeters || have_brim",
859
+ "kind": "field",
860
+ "line": 807
861
+ },
862
+ {
863
+ "fields": [
864
+ "brim_ears_max_angle"
865
+ ],
866
+ "enable_if": "brim_width > 0.0f",
867
+ "kind": "field",
868
+ "line": 812
869
+ },
870
+ {
871
+ "fields": [
872
+ "brim_ears_detection_length"
873
+ ],
874
+ "enable_if": "brim_width > 0.0f",
875
+ "kind": "field",
876
+ "line": 813
877
+ },
878
+ {
879
+ "fields": [
880
+ "brim_ears_max_angle"
881
+ ],
882
+ "enable_if": "have_brim_ear",
883
+ "kind": "line",
884
+ "line": 815
885
+ },
886
+ {
887
+ "fields": [
888
+ "brim_ears_detection_length"
889
+ ],
890
+ "enable_if": "have_brim_ear",
891
+ "kind": "line",
892
+ "line": 816
893
+ },
894
+ {
895
+ "fields": [
896
+ "elefant_foot_compensation_layers"
897
+ ],
898
+ "enable_if": "config->opt_float(\"elefant_foot_compensation\") > 0 || config->option<ConfigOptionPercent>(\"elefant_foot_layers_density\")->get_abs_value(1.0f) < 1.0f",
899
+ "kind": "line",
900
+ "line": 819
901
+ },
902
+ {
903
+ "fields": [
904
+ "support_threshold_angle"
905
+ ],
906
+ "enable_if": "have_support_material && is_auto(support_type)",
907
+ "kind": "field",
908
+ "line": 835
909
+ },
910
+ {
911
+ "fields": [
912
+ "support_threshold_overlap"
913
+ ],
914
+ "enable_if": "config->opt_int(\"support_threshold_angle\") == 0 && have_support_material && is_auto(support_type)",
915
+ "kind": "field",
916
+ "line": 836
917
+ },
918
+ {
919
+ "fields": [
920
+ "support_closing_radius"
921
+ ],
922
+ "enable_if": "have_support_material && support_style == smsSnug",
923
+ "kind": "field",
924
+ "line": 837
925
+ },
926
+ {
927
+ "fields": [
928
+ "support_threshold_overlap"
929
+ ],
930
+ "enable_if": "!support_is_tree",
931
+ "kind": "line",
932
+ "line": 844
933
+ },
934
+ {
935
+ "fields": [
936
+ "independent_support_layer_height"
937
+ ],
938
+ "enable_if": "have_support_material && !support_is_organic",
939
+ "kind": "line",
940
+ "line": 853
941
+ },
942
+ {
943
+ "fields": [
944
+ "tree_support_brim_width"
945
+ ],
946
+ "enable_if": "support_is_tree && !config->opt_bool(\"tree_support_auto_brim\")",
947
+ "kind": "field",
948
+ "line": 855
949
+ },
950
+ {
951
+ "fields": [
952
+ "max_bridge_length"
953
+ ],
954
+ "enable_if": "support_is_tree",
955
+ "kind": "line",
956
+ "line": 857
957
+ },
958
+ {
959
+ "fields": [
960
+ "bridge_no_support"
961
+ ],
962
+ "enable_if": "!support_is_tree",
963
+ "kind": "line",
964
+ "line": 858
965
+ },
966
+ {
967
+ "fields": [
968
+ "support_critical_regions_only"
969
+ ],
970
+ "enable_if": "is_auto(support_type) && support_is_tree",
971
+ "kind": "line",
972
+ "line": 859
973
+ },
974
+ {
975
+ "fields": [
976
+ "support_ironing"
977
+ ],
978
+ "enable_if": "can_ironing_support",
979
+ "kind": "field",
980
+ "line": 866
981
+ },
982
+ {
983
+ "fields": [
984
+ "support_interface_spacing"
985
+ ],
986
+ "enable_if": "have_support_material && have_support_interface && !has_support_ironing",
987
+ "kind": "field",
988
+ "line": 871
989
+ },
990
+ {
991
+ "fields": [
992
+ "support_speed"
993
+ ],
994
+ "enable_if": "have_support_material || have_skirt_height",
995
+ "kind": "line",
996
+ "line": 876
997
+ },
998
+ {
999
+ "fields": [
1000
+ "support_interface_speed"
1001
+ ],
1002
+ "enable_if": "have_support_material && have_support_interface",
1003
+ "kind": "line",
1004
+ "line": 877
1005
+ },
1006
+ {
1007
+ "fields": [
1008
+ "support_material_synchronize_layers"
1009
+ ],
1010
+ "enable_if": "have_support_soluble",
1011
+ "kind": "field",
1012
+ "line": 884
1013
+ },
1014
+ {
1015
+ "fields": [
1016
+ "inner_wall_line_width"
1017
+ ],
1018
+ "enable_if": "have_perimeters || have_skirt || have_brim",
1019
+ "kind": "field",
1020
+ "line": 886
1021
+ },
1022
+ {
1023
+ "fields": [
1024
+ "support_filament"
1025
+ ],
1026
+ "enable_if": "have_support_material || have_skirt",
1027
+ "kind": "field",
1028
+ "line": 887
1029
+ },
1030
+ {
1031
+ "fields": [
1032
+ "raft_contact_distance"
1033
+ ],
1034
+ "enable_if": "have_raft && !have_support_soluble",
1035
+ "kind": "line",
1036
+ "line": 889
1037
+ },
1038
+ {
1039
+ "fields": [
1040
+ "raft_first_layer_density"
1041
+ ],
1042
+ "enable_if": "have_support_material",
1043
+ "kind": "field",
1044
+ "line": 892
1045
+ },
1046
+ {
1047
+ "fields": [
1048
+ "ironing_speed"
1049
+ ],
1050
+ "enable_if": "has_ironing || has_support_ironing",
1051
+ "kind": "line",
1052
+ "line": 905
1053
+ },
1054
+ {
1055
+ "fields": [
1056
+ "print_order"
1057
+ ],
1058
+ "enable_if": "!have_sequential_printing",
1059
+ "kind": "field",
1060
+ "line": 914
1061
+ },
1062
+ {
1063
+ "fields": [
1064
+ "single_extruder_multi_material"
1065
+ ],
1066
+ "enable_if": "!is_BBL_Printer",
1067
+ "kind": "field",
1068
+ "line": 916
1069
+ },
1070
+ {
1071
+ "fields": [
1072
+ "ooze_prevention"
1073
+ ],
1074
+ "enable_if": "!bSEMM",
1075
+ "kind": "field",
1076
+ "line": 921
1077
+ },
1078
+ {
1079
+ "fields": [
1080
+ "standby_temperature_delta"
1081
+ ],
1082
+ "enable_if": "have_ooze_prevention",
1083
+ "kind": "line",
1084
+ "line": 923
1085
+ },
1086
+ {
1087
+ "fields": [
1088
+ "preheat_time"
1089
+ ],
1090
+ "enable_if": "have_ooze_prevention",
1091
+ "kind": "line",
1092
+ "line": 924
1093
+ },
1094
+ {
1095
+ "fields": [
1096
+ "preheat_steps"
1097
+ ],
1098
+ "enable_if": "have_ooze_prevention && (preheat_steps > 0)",
1099
+ "kind": "line",
1100
+ "line": 926
1101
+ },
1102
+ {
1103
+ "fields": [
1104
+ "enable_tower_interface_cooldown_during_tower"
1105
+ ],
1106
+ "enable_if": "have_prime_tower && config->opt_bool(\"enable_tower_interface_features\")",
1107
+ "kind": "line",
1108
+ "line": 932
1109
+ },
1110
+ {
1111
+ "fields": [
1112
+ "wipe_tower_cone_angle"
1113
+ ],
1114
+ "enable_if": "have_prime_tower && supports_wipe_tower_2 && wipe_tower_wall_type == WipeTowerWallType::wtwCone",
1115
+ "kind": "line",
1116
+ "line": 945
1117
+ },
1118
+ {
1119
+ "fields": [
1120
+ "wipe_tower_extra_rib_length"
1121
+ ],
1122
+ "enable_if": "have_rib_wall",
1123
+ "kind": "line",
1124
+ "line": 946
1125
+ },
1126
+ {
1127
+ "fields": [
1128
+ "wipe_tower_rib_width"
1129
+ ],
1130
+ "enable_if": "have_rib_wall",
1131
+ "kind": "line",
1132
+ "line": 947
1133
+ },
1134
+ {
1135
+ "fields": [
1136
+ "wipe_tower_fillet_wall"
1137
+ ],
1138
+ "enable_if": "have_rib_wall",
1139
+ "kind": "line",
1140
+ "line": 948
1141
+ },
1142
+ {
1143
+ "fields": [
1144
+ "prime_tower_width"
1145
+ ],
1146
+ "enable_if": "have_prime_tower && !have_rib_wall",
1147
+ "kind": "field",
1148
+ "line": 949
1149
+ },
1150
+ {
1151
+ "fields": [
1152
+ "single_extruder_multi_material_priming"
1153
+ ],
1154
+ "enable_if": "!bSEMM && have_prime_tower && supports_wipe_tower_2",
1155
+ "kind": "line",
1156
+ "line": 951
1157
+ },
1158
+ {
1159
+ "fields": [
1160
+ "prime_volume"
1161
+ ],
1162
+ "enable_if": "have_prime_tower && (!purge_in_primetower || !bSEMM)",
1163
+ "kind": "line",
1164
+ "line": 953
1165
+ },
1166
+ {
1167
+ "fields": [
1168
+ "max_travel_detour_distance"
1169
+ ],
1170
+ "enable_if": "have_avoid_crossing_perimeters",
1171
+ "kind": "line",
1172
+ "line": 959
1173
+ },
1174
+ {
1175
+ "fields": [
1176
+ "slowdown_for_curled_perimeters"
1177
+ ],
1178
+ "enable_if": "has_overhang_speed, variant_index",
1179
+ "kind": "line",
1180
+ "line": 969
1181
+ },
1182
+ {
1183
+ "fields": [
1184
+ "flush_into_objects"
1185
+ ],
1186
+ "enable_if": "!is_global_config",
1187
+ "kind": "line",
1188
+ "line": 971
1189
+ },
1190
+ {
1191
+ "fields": [
1192
+ "support_interface_not_for_body"
1193
+ ],
1194
+ "enable_if": "config->opt_int(\"support_interface_filament\")&&!config->opt_int(\"support_filament\")",
1195
+ "kind": "line",
1196
+ "line": 973
1197
+ },
1198
+ {
1199
+ "fields": [
1200
+ "fuzzy_skin_scale"
1201
+ ],
1202
+ "enable_if": "fuzzy_skin_noise_type != NoiseType::Classic && has_fuzzy_skin && !is_ripple",
1203
+ "kind": "line",
1204
+ "line": 985
1205
+ },
1206
+ {
1207
+ "fields": [
1208
+ "fuzzy_skin_octaves"
1209
+ ],
1210
+ "enable_if": "fuzzy_skin_noise_type != NoiseType::Classic && fuzzy_skin_noise_type != NoiseType::Voronoi && has_fuzzy_skin && !is_ripple",
1211
+ "kind": "line",
1212
+ "line": 986
1213
+ },
1214
+ {
1215
+ "fields": [
1216
+ "fuzzy_skin_persistence"
1217
+ ],
1218
+ "enable_if": "(fuzzy_skin_noise_type == NoiseType::Perlin || fuzzy_skin_noise_type == NoiseType::Billow) && has_fuzzy_skin && !is_ripple",
1219
+ "kind": "line",
1220
+ "line": 987
1221
+ },
1222
+ {
1223
+ "fields": [
1224
+ "fuzzy_skin_ripples_per_layer"
1225
+ ],
1226
+ "enable_if": "is_ripple && has_fuzzy_skin",
1227
+ "kind": "line",
1228
+ "line": 988
1229
+ },
1230
+ {
1231
+ "fields": [
1232
+ "fuzzy_skin_ripple_offset"
1233
+ ],
1234
+ "enable_if": "is_ripple && has_fuzzy_skin",
1235
+ "kind": "line",
1236
+ "line": 989
1237
+ },
1238
+ {
1239
+ "fields": [
1240
+ "fuzzy_skin_layers_between_ripple_offset"
1241
+ ],
1242
+ "enable_if": "is_ripple && has_fuzzy_skin",
1243
+ "kind": "line",
1244
+ "line": 990
1245
+ },
1246
+ {
1247
+ "fields": [
1248
+ "detect_thin_wall"
1249
+ ],
1250
+ "enable_if": "!have_arachne",
1251
+ "kind": "field",
1252
+ "line": 996
1253
+ },
1254
+ {
1255
+ "fields": [
1256
+ "wipe_speed"
1257
+ ],
1258
+ "enable_if": "!is_role_based_wipe_speed",
1259
+ "kind": "field",
1260
+ "line": 1000
1261
+ },
1262
+ {
1263
+ "fields": [
1264
+ "accel_to_decel_factor"
1265
+ ],
1266
+ "enable_if": "config->opt_bool(\"accel_to_decel_enable\")",
1267
+ "kind": "field",
1268
+ "line": 1005
1269
+ },
1270
+ {
1271
+ "fields": [
1272
+ "make_overhang_printable_angle"
1273
+ ],
1274
+ "enable_if": "have_make_overhang_printable",
1275
+ "kind": "line",
1276
+ "line": 1008
1277
+ },
1278
+ {
1279
+ "fields": [
1280
+ "make_overhang_printable_hole_size"
1281
+ ],
1282
+ "enable_if": "have_make_overhang_printable",
1283
+ "kind": "line",
1284
+ "line": 1009
1285
+ },
1286
+ {
1287
+ "fields": [
1288
+ "overhang_reverse"
1289
+ ],
1290
+ "enable_if": "allow_overhang_reverse",
1291
+ "kind": "line",
1292
+ "line": 1019
1293
+ },
1294
+ {
1295
+ "fields": [
1296
+ "overhang_reverse_internal_only"
1297
+ ],
1298
+ "enable_if": "allow_overhang_reverse && has_overhang_reverse",
1299
+ "kind": "line",
1300
+ "line": 1020
1301
+ },
1302
+ {
1303
+ "fields": [
1304
+ "overhang_reverse_threshold"
1305
+ ],
1306
+ "enable_if": "has_detect_overhang_wall && allow_overhang_reverse && has_overhang_reverse && !has_overhang_reverse_internal_only",
1307
+ "kind": "line",
1308
+ "line": 1027
1309
+ },
1310
+ {
1311
+ "fields": [
1312
+ "timelapse_type"
1313
+ ],
1314
+ "enable_if": "is_BBL_Printer",
1315
+ "kind": "line",
1316
+ "line": 1028
1317
+ },
1318
+ {
1319
+ "fields": [
1320
+ "small_area_infill_flow_compensation_model"
1321
+ ],
1322
+ "enable_if": "have_small_area_infill_flow_compensation",
1323
+ "kind": "line",
1324
+ "line": 1032
1325
+ },
1326
+ {
1327
+ "fields": [
1328
+ "seam_slope_type"
1329
+ ],
1330
+ "enable_if": "!has_spiral_vase",
1331
+ "kind": "field",
1332
+ "line": 1035
1333
+ },
1334
+ {
1335
+ "fields": [
1336
+ "seam_slope_conditional"
1337
+ ],
1338
+ "enable_if": "has_seam_slope",
1339
+ "kind": "line",
1340
+ "line": 1037
1341
+ },
1342
+ {
1343
+ "fields": [
1344
+ "seam_slope_start_height"
1345
+ ],
1346
+ "enable_if": "has_seam_slope",
1347
+ "kind": "line",
1348
+ "line": 1038
1349
+ },
1350
+ {
1351
+ "fields": [
1352
+ "seam_slope_entire_loop"
1353
+ ],
1354
+ "enable_if": "has_seam_slope",
1355
+ "kind": "line",
1356
+ "line": 1039
1357
+ },
1358
+ {
1359
+ "fields": [
1360
+ "seam_slope_min_length"
1361
+ ],
1362
+ "enable_if": "has_seam_slope",
1363
+ "kind": "line",
1364
+ "line": 1040
1365
+ },
1366
+ {
1367
+ "fields": [
1368
+ "seam_slope_steps"
1369
+ ],
1370
+ "enable_if": "has_seam_slope",
1371
+ "kind": "line",
1372
+ "line": 1041
1373
+ },
1374
+ {
1375
+ "fields": [
1376
+ "seam_slope_inner_walls"
1377
+ ],
1378
+ "enable_if": "has_seam_slope",
1379
+ "kind": "line",
1380
+ "line": 1042
1381
+ },
1382
+ {
1383
+ "fields": [
1384
+ "scarf_joint_speed"
1385
+ ],
1386
+ "enable_if": "has_seam_slope",
1387
+ "kind": "line",
1388
+ "line": 1043
1389
+ },
1390
+ {
1391
+ "fields": [
1392
+ "scarf_joint_flow_ratio"
1393
+ ],
1394
+ "enable_if": "has_seam_slope",
1395
+ "kind": "line",
1396
+ "line": 1044
1397
+ },
1398
+ {
1399
+ "fields": [
1400
+ "seam_slope_min_length"
1401
+ ],
1402
+ "enable_if": "!config->opt_bool(\"seam_slope_entire_loop\")",
1403
+ "kind": "field",
1404
+ "line": 1045
1405
+ },
1406
+ {
1407
+ "fields": [
1408
+ "scarf_angle_threshold"
1409
+ ],
1410
+ "enable_if": "has_seam_slope && config->opt_bool(\"seam_slope_conditional\")",
1411
+ "kind": "line",
1412
+ "line": 1046
1413
+ },
1414
+ {
1415
+ "fields": [
1416
+ "scarf_overhang_threshold"
1417
+ ],
1418
+ "enable_if": "has_seam_slope && config->opt_bool(\"seam_slope_conditional\")",
1419
+ "kind": "line",
1420
+ "line": 1047
1421
+ },
1422
+ {
1423
+ "fields": [
1424
+ "mmu_segmented_region_interlocking_depth"
1425
+ ],
1426
+ "enable_if": "!use_beam_interlocking",
1427
+ "kind": "line",
1428
+ "line": 1050
1429
+ },
1430
+ {
1431
+ "fields": [
1432
+ "interlocking_beam_width"
1433
+ ],
1434
+ "enable_if": "use_beam_interlocking",
1435
+ "kind": "line",
1436
+ "line": 1051
1437
+ },
1438
+ {
1439
+ "fields": [
1440
+ "interlocking_orientation"
1441
+ ],
1442
+ "enable_if": "use_beam_interlocking",
1443
+ "kind": "line",
1444
+ "line": 1052
1445
+ },
1446
+ {
1447
+ "fields": [
1448
+ "interlocking_beam_layer_count"
1449
+ ],
1450
+ "enable_if": "use_beam_interlocking",
1451
+ "kind": "line",
1452
+ "line": 1053
1453
+ },
1454
+ {
1455
+ "fields": [
1456
+ "interlocking_depth"
1457
+ ],
1458
+ "enable_if": "use_beam_interlocking",
1459
+ "kind": "line",
1460
+ "line": 1054
1461
+ },
1462
+ {
1463
+ "fields": [
1464
+ "interlocking_boundary_avoidance"
1465
+ ],
1466
+ "enable_if": "use_beam_interlocking",
1467
+ "kind": "line",
1468
+ "line": 1055
1469
+ },
1470
+ {
1471
+ "fields": [
1472
+ "sparse_infill_rotate_template"
1473
+ ],
1474
+ "enable_if": "!FillAdaptive",
1475
+ "kind": "field",
1476
+ "line": 1069
1477
+ },
1478
+ {
1479
+ "fields": [
1480
+ "infill_direction"
1481
+ ],
1482
+ "enable_if": "config->opt_string(\"sparse_infill_rotate_template\") == \"\" && !FillAdaptive",
1483
+ "kind": "field",
1484
+ "line": 1070
1485
+ },
1486
+ {
1487
+ "fields": [
1488
+ "solid_infill_direction"
1489
+ ],
1490
+ "enable_if": "config->opt_string(\"solid_infill_rotate_template\") == \"\"",
1491
+ "kind": "field",
1492
+ "line": 1071
1493
+ },
1494
+ {
1495
+ "fields": [
1496
+ "infill_overhang_angle"
1497
+ ],
1498
+ "enable_if": "config->opt_enum<InfillPattern>(\"sparse_infill_pattern\") == InfillPattern::ipLateralHoneycomb",
1499
+ "kind": "line",
1500
+ "line": 1073
1501
+ },
1502
+ {
1503
+ "fields": [
1504
+ "enable_wrapping_detection"
1505
+ ],
1506
+ "enable_if": "DevPrinterConfigUtil::support_wrapping_detection(printer_type)",
1507
+ "kind": "line",
1508
+ "line": 1076
1509
+ }
1510
+ ],
1511
+ "stats": {
1512
+ "toggle_calls_in_source": 163,
1513
+ "rules_extracted": 157
1514
+ }
1515
+ },
1516
+ "toggle_print_sla_options": {
1517
+ "locals": {
1518
+ "supports_en": "config->opt_bool(\"supports_enable\")",
1519
+ "pad_en": "config->opt_bool(\"pad_enable\")",
1520
+ "zero_elev": "config->opt_bool(\"pad_around_object\") && pad_en"
1521
+ },
1522
+ "rules": [
1523
+ {
1524
+ "fields": [
1525
+ "support_head_front_diameter"
1526
+ ],
1527
+ "enable_if": "supports_en",
1528
+ "kind": "field",
1529
+ "line": 1117
1530
+ },
1531
+ {
1532
+ "fields": [
1533
+ "support_head_penetration"
1534
+ ],
1535
+ "enable_if": "supports_en",
1536
+ "kind": "field",
1537
+ "line": 1118
1538
+ },
1539
+ {
1540
+ "fields": [
1541
+ "support_head_width"
1542
+ ],
1543
+ "enable_if": "supports_en",
1544
+ "kind": "field",
1545
+ "line": 1119
1546
+ },
1547
+ {
1548
+ "fields": [
1549
+ "support_pillar_diameter"
1550
+ ],
1551
+ "enable_if": "supports_en",
1552
+ "kind": "field",
1553
+ "line": 1120
1554
+ },
1555
+ {
1556
+ "fields": [
1557
+ "support_small_pillar_diameter_percent"
1558
+ ],
1559
+ "enable_if": "supports_en",
1560
+ "kind": "field",
1561
+ "line": 1121
1562
+ },
1563
+ {
1564
+ "fields": [
1565
+ "support_max_bridges_on_pillar"
1566
+ ],
1567
+ "enable_if": "supports_en",
1568
+ "kind": "field",
1569
+ "line": 1122
1570
+ },
1571
+ {
1572
+ "fields": [
1573
+ "support_pillar_connection_mode"
1574
+ ],
1575
+ "enable_if": "supports_en",
1576
+ "kind": "field",
1577
+ "line": 1123
1578
+ },
1579
+ {
1580
+ "fields": [
1581
+ "support_buildplate_only"
1582
+ ],
1583
+ "enable_if": "supports_en",
1584
+ "kind": "field",
1585
+ "line": 1124
1586
+ },
1587
+ {
1588
+ "fields": [
1589
+ "support_base_diameter"
1590
+ ],
1591
+ "enable_if": "supports_en",
1592
+ "kind": "field",
1593
+ "line": 1125
1594
+ },
1595
+ {
1596
+ "fields": [
1597
+ "support_base_height"
1598
+ ],
1599
+ "enable_if": "supports_en",
1600
+ "kind": "field",
1601
+ "line": 1126
1602
+ },
1603
+ {
1604
+ "fields": [
1605
+ "support_base_safety_distance"
1606
+ ],
1607
+ "enable_if": "supports_en",
1608
+ "kind": "field",
1609
+ "line": 1127
1610
+ },
1611
+ {
1612
+ "fields": [
1613
+ "support_critical_angle"
1614
+ ],
1615
+ "enable_if": "supports_en",
1616
+ "kind": "field",
1617
+ "line": 1128
1618
+ },
1619
+ {
1620
+ "fields": [
1621
+ "support_max_bridge_length"
1622
+ ],
1623
+ "enable_if": "supports_en",
1624
+ "kind": "field",
1625
+ "line": 1129
1626
+ },
1627
+ {
1628
+ "fields": [
1629
+ "support_max_pillar_link_distance"
1630
+ ],
1631
+ "enable_if": "supports_en",
1632
+ "kind": "field",
1633
+ "line": 1130
1634
+ },
1635
+ {
1636
+ "fields": [
1637
+ "support_points_density_relative"
1638
+ ],
1639
+ "enable_if": "supports_en",
1640
+ "kind": "field",
1641
+ "line": 1131
1642
+ },
1643
+ {
1644
+ "fields": [
1645
+ "support_points_minimal_distance"
1646
+ ],
1647
+ "enable_if": "supports_en",
1648
+ "kind": "field",
1649
+ "line": 1132
1650
+ },
1651
+ {
1652
+ "fields": [
1653
+ "pad_wall_thickness"
1654
+ ],
1655
+ "enable_if": "pad_en",
1656
+ "kind": "field",
1657
+ "line": 1136
1658
+ },
1659
+ {
1660
+ "fields": [
1661
+ "pad_wall_height"
1662
+ ],
1663
+ "enable_if": "pad_en",
1664
+ "kind": "field",
1665
+ "line": 1137
1666
+ },
1667
+ {
1668
+ "fields": [
1669
+ "pad_brim_size"
1670
+ ],
1671
+ "enable_if": "pad_en",
1672
+ "kind": "field",
1673
+ "line": 1138
1674
+ },
1675
+ {
1676
+ "fields": [
1677
+ "pad_max_merge_distance"
1678
+ ],
1679
+ "enable_if": "pad_en",
1680
+ "kind": "field",
1681
+ "line": 1139
1682
+ },
1683
+ {
1684
+ "fields": [
1685
+ "pad_edge_radius"
1686
+ ],
1687
+ "enable_if": "supports_en",
1688
+ "kind": "field",
1689
+ "line": 1140
1690
+ },
1691
+ {
1692
+ "fields": [
1693
+ "pad_wall_slope"
1694
+ ],
1695
+ "enable_if": "pad_en",
1696
+ "kind": "field",
1697
+ "line": 1141
1698
+ },
1699
+ {
1700
+ "fields": [
1701
+ "pad_around_object"
1702
+ ],
1703
+ "enable_if": "pad_en",
1704
+ "kind": "field",
1705
+ "line": 1142
1706
+ },
1707
+ {
1708
+ "fields": [
1709
+ "pad_around_object_everywhere"
1710
+ ],
1711
+ "enable_if": "pad_en",
1712
+ "kind": "field",
1713
+ "line": 1143
1714
+ },
1715
+ {
1716
+ "fields": [
1717
+ "support_object_elevation"
1718
+ ],
1719
+ "enable_if": "supports_en && !zero_elev",
1720
+ "kind": "field",
1721
+ "line": 1147
1722
+ },
1723
+ {
1724
+ "fields": [
1725
+ "pad_object_gap"
1726
+ ],
1727
+ "enable_if": "zero_elev",
1728
+ "kind": "field",
1729
+ "line": 1148
1730
+ },
1731
+ {
1732
+ "fields": [
1733
+ "pad_around_object_everywhere"
1734
+ ],
1735
+ "enable_if": "zero_elev",
1736
+ "kind": "field",
1737
+ "line": 1149
1738
+ },
1739
+ {
1740
+ "fields": [
1741
+ "pad_object_connector_stride"
1742
+ ],
1743
+ "enable_if": "zero_elev",
1744
+ "kind": "field",
1745
+ "line": 1150
1746
+ },
1747
+ {
1748
+ "fields": [
1749
+ "pad_object_connector_width"
1750
+ ],
1751
+ "enable_if": "zero_elev",
1752
+ "kind": "field",
1753
+ "line": 1151
1754
+ },
1755
+ {
1756
+ "fields": [
1757
+ "pad_object_connector_penetration"
1758
+ ],
1759
+ "enable_if": "zero_elev",
1760
+ "kind": "field",
1761
+ "line": 1152
1762
+ }
1763
+ ],
1764
+ "stats": {
1765
+ "toggle_calls_in_source": 30,
1766
+ "rules_extracted": 30
1767
+ }
1768
+ },
1769
+ "TabPrint::toggle_options": {
1770
+ "locals": {
1771
+ "is_BBL_printer": "wxGetApp().preset_bundle->is_bbl_vendor()",
1772
+ "support_type": "m_config->opt_enum<SupportType>(\"support_type\")",
1773
+ "is_user_and_saved_preset": "!selected_preset.is_system && !selected_preset.is_dirty",
1774
+ "support_material_overhangs_queried": "m_config->opt_bool(\"enable_support\") && !m_config->opt_bool(\"detect_overhang_wall\")",
1775
+ "l_is_sorted": "std::is_sorted(l.begin(), l.end())",
1776
+ "r_is_sorted": "std::is_sorted(r.begin(), r.end())",
1777
+ "opt": "dynamic_cast<ConfigOptionVectorBase *>(m_config->option(\"filament_retraction_length\"))",
1778
+ "iter": "m_active_page->m_opt_id_map.lower_bound(opt_key)",
1779
+ "vec": "dynamic_cast<ConfigOptionVectorBase *>(m_config->option(opt_key))",
1780
+ "opt_key": "opt_id",
1781
+ "opt_id2": "opt_id",
1782
+ "n": "opt_key.find('#')",
1783
+ "inull": "std::find(m_null_keys.begin(), m_null_keys.end(), opt_id2)",
1784
+ "tab_opt": "dynamic_cast<ConfigOptionVectorBase *>(m_config->option(opt_key))",
1785
+ "set": "*m_config->option(k) != *m_prints.get_selected_preset().config.option(k) || inull != m_null_keys.end()",
1786
+ "k": "opt_key",
1787
+ "append_retraction_option": "[this, retraction_optgroup](const std::string& opt_key, int opt_index) { Line line {\"\",\"\"}",
1788
+ "append_ironing_option": "[this, ironing_optgroup](const std::string& opt_key, int opt_index) { Line line {\"\",\"\"}",
1789
+ "has_process_value": "process_option != nullptr",
1790
+ "filament_vector": "dynamic_cast<ConfigOptionVectorBase*>(filament_option)) { std::unique_ptr<ConfigOption> process_clone(process_option->clone()); size_t source_index = 0; if (process_vector != nullptr) source_index = target_index; filament_vector->set_at(process_clone.get(), target_index, source_index); const boost::any filament_config_value = optgroup_sh->get_config_value(*m_config, opt_key, opt_index); field->set_value(filament_config_value, false); field->update_na_value(_(L(\"N/A\"))); applied_value = true; } } } if (applied_value) field->set_last_meaningful_value()",
1791
+ "og_it": "std::find_if(page->m_optgroups.begin(), page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == \"Retraction\"; })",
1792
+ "have_retract_length": "dynamic_cast<ConfigOptionVectorBase *>(m_config->option(\"filament_retraction_length\"))->is_nil(extruder_idx) || m_config->opt_float(\"filament_retraction_length\", extruder_idx) > 0",
1793
+ "is_checked": "!dynamic_cast<ConfigOptionVectorBase*>(m_config->option(opt_key))->is_nil(extruder_idx)",
1794
+ "machine_enabled": "machine_enabled_level == LongRectrationLevel::EnableFilament",
1795
+ "filament_enabled": "m_config->option<ConfigOptionBools>(\"filament_long_retractions_when_cut\")->values[extruder_idx] == 1",
1796
+ "og_ironing_it": "std::find_if(page->m_optgroups.begin(), page->m_optgroups.end(), [](const ConfigOptionsGroupShp og) { return og->title == \"Ironing\"; })",
1797
+ "edit_custom_gcode_fn": "[this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }"
1798
+ },
1799
+ "rules": [],
1800
+ "stats": {
1801
+ "toggle_calls_in_source": 0,
1802
+ "rules_extracted": 0
1803
+ }
1804
+ },
1805
+ "TabFilament::toggle_options": {
1806
+ "locals": {
1807
+ "has_enable_overhang_bridge_fan": "m_config->opt_bool(\"enable_overhang_bridge_fan\", 0)",
1808
+ "has_slow_down_for_layer_cooling": "m_config->opt_bool(\"slow_down_for_layer_cooling\", 0)",
1809
+ "support_air_filtration": "printer_cfg.opt_bool(\"support_air_filtration\")",
1810
+ "activate_air_filtration": "m_config->opt_bool(\"activate_air_filtration\", 0)",
1811
+ "pa": "m_config->opt_bool(\"enable_pressure_advance\", 0)",
1812
+ "support_multi_bed_types": "std::find(bed_temp_keys.begin(), bed_temp_keys.end(), bed_temp_1st_layer_key) == bed_temp_keys.end() || is_BBL_printer || printer_cfg.opt_bool(\"support_multi_bed_types\")",
1813
+ "has_adaptive_pa": "m_config->opt_bool(\"adaptive_pressure_advance\", 0)",
1814
+ "is_pellet_printer": "printer_cfg.opt_bool(\"pellet_modded_printer\")",
1815
+ "enable_fit": "volumetric_speed_cos != \"0 0 0 0 0 0\"",
1816
+ "multitool_ramming": "m_config->opt_bool(\"filament_multitool_ramming\", 0)",
1817
+ "is_BBL_multi_extruder": "is_BBL_printer && printer_cfg.option<ConfigOptionFloats>(\"nozzle_diameter\")->size() > 1",
1818
+ "get_value_by_opt_key": "[&](const std::string& opt_key) { if (opt_key_pure == opt_key && !std::isnan(dvalue)) { // Return the incoming value (if it is valid) if the opt_key equals the key of the changed option. return percent_value_clamp(dvalue); } else if (!m_config->option<ConfigOptionPercents>(opt_key)->is_nil(opt_idx)) { // Return the overridden value if the option value for the opt_key was overridden for the given filament. return percent_value_clamp(m_config->option<ConfigOptionPercents>(opt_key)->get_at(opt_idx)); } else { // Return the value of the option value for opt_key from the printer setting if it was not overridden for the filament. const auto& printer_config = m_preset_bundle->printers.get_edited_preset().config; const std::string printer_opt_key = opt_key.substr(strlen(\"filament_\")); return percent_value_clamp(printer_config.option<ConfigOptionPercents>(printer_opt_key)->get_at(opt_idx)); } return 0.",
1819
+ "edit_custom_gcode_fn": "[this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }",
1820
+ "option": "optgroup->get_option(opt_key, 0)",
1821
+ "flavor": "m_config->option<ConfigOptionEnum<GCodeFlavor>>(\"gcode_flavor\")->value",
1822
+ "is_marlin_flavor": "(flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware || flavor == gcfKlipper || flavor == gcfRepRapFirmware || flavor == gcfRepetier)",
1823
+ "is_SEMM": "m_config->opt_bool(\"single_extruder_multi_material\")",
1824
+ "reset_to_filament_color": "[this, extruder_idx](wxWindow* parent) { // m_reset_to_filament_color = new ScalableButton(parent, wxID_ANY, \"undo\", _L(\"Reset to Filament Color\"), // wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true); // ScalableButton* btn = m_reset_to_filament_color; // btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); // btn->SetSize(btn->GetBestSize()); // auto sizer = new wxBoxSizer(wxHORIZONTAL); // sizer->Add(btn); // btn->Bind(wxEVT_BUTTON, [this, extruder_idx](wxCommandEvent& e) // { // std::vector<std::string> colors = static_cast<const ConfigOptionStrings*>(m_config->option(\"extruder_colour\"))->values; // colors[extruder_idx] = \"\"; // DynamicPrintConfig new_conf = *m_config; // new_conf.set_key_value(\"extruder_colour\", new ConfigOptionStrings(colors)); // load_config(new_conf); // update_dirty(); // update(); // })",
1825
+ "has_multiple_nozzle": "extruder_max_nozzle_count && std::any_of(extruder_max_nozzle_count->values.begin(), extruder_max_nozzle_count->values.end(), [](int v) { return v > 1 && v != ConfigOptionIntsNullable::nil_value(); })",
1826
+ "show_purge_mode": "has_multiple_nozzle || support_fast_purge",
1827
+ "needs_reset": "std::find(allowed.begin(), allowed.end(), current) == allowed.end()"
1828
+ },
1829
+ "rules": [
1830
+ {
1831
+ "fields": [
1832
+ "filament_minimal_purge_on_wipe_tower",
1833
+ "filament_loading_speed_start",
1834
+ "filament_loading_speed",
1835
+ "filament_unloading_speed_start",
1836
+ "filament_unloading_speed",
1837
+ "filament_toolchange_delay",
1838
+ "filament_cooling_moves",
1839
+ "filament_cooling_initial_speed",
1840
+ "filament_cooling_final_speed"
1841
+ ],
1842
+ "enable_if": "!is_BBL_printer",
1843
+ "kind": "option",
1844
+ "line": 4786
1845
+ },
1846
+ {
1847
+ "fields": [
1848
+ "dont_slow_down_outer_wall"
1849
+ ],
1850
+ "enable_if": "has_slow_down_for_layer_cooling",
1851
+ "kind": "option",
1852
+ "line": 4691
1853
+ },
1854
+ {
1855
+ "fields": [
1856
+ "activate_air_filtration_during_print"
1857
+ ],
1858
+ "enable_if": "activate_air_filtration",
1859
+ "kind": "option",
1860
+ "line": 4724
1861
+ },
1862
+ {
1863
+ "fields": [
1864
+ "during_print_exhaust_fan_speed"
1865
+ ],
1866
+ "enable_if": "activate_air_filtration && m_config->opt_bool(\"activate_air_filtration_during_print\", 0)",
1867
+ "kind": "option",
1868
+ "line": 4725
1869
+ },
1870
+ {
1871
+ "fields": [
1872
+ "activate_air_filtration_on_completion"
1873
+ ],
1874
+ "enable_if": "activate_air_filtration",
1875
+ "kind": "option",
1876
+ "line": 4726
1877
+ },
1878
+ {
1879
+ "fields": [
1880
+ "complete_print_exhaust_fan_speed"
1881
+ ],
1882
+ "enable_if": "activate_air_filtration && m_config->opt_bool(\"activate_air_filtration_on_completion\", 0)",
1883
+ "kind": "option",
1884
+ "line": 4727
1885
+ },
1886
+ {
1887
+ "fields": [
1888
+ "pressure_advance"
1889
+ ],
1890
+ "enable_if": "pa",
1891
+ "kind": "option",
1892
+ "line": 4733
1893
+ },
1894
+ {
1895
+ "fields": [
1896
+ "adaptive_pressure_advance"
1897
+ ],
1898
+ "enable_if": "pa",
1899
+ "kind": "option",
1900
+ "line": 4761
1901
+ },
1902
+ {
1903
+ "fields": [
1904
+ "adaptive_pressure_advance_overhangs"
1905
+ ],
1906
+ "enable_if": "pa",
1907
+ "kind": "option",
1908
+ "line": 4762
1909
+ },
1910
+ {
1911
+ "fields": [
1912
+ "filament_adaptive_volumetric_speed"
1913
+ ],
1914
+ "enable_if": "enable_fit, 256 + variant_idx",
1915
+ "kind": "option",
1916
+ "line": 4778
1917
+ },
1918
+ {
1919
+ "fields": [
1920
+ "filament_multitool_ramming_volume"
1921
+ ],
1922
+ "enable_if": "multitool_ramming",
1923
+ "kind": "option",
1924
+ "line": 4792
1925
+ },
1926
+ {
1927
+ "fields": [
1928
+ "filament_multitool_ramming_flow"
1929
+ ],
1930
+ "enable_if": "multitool_ramming",
1931
+ "kind": "option",
1932
+ "line": 4793
1933
+ }
1934
+ ],
1935
+ "stats": {
1936
+ "toggle_calls_in_source": 13,
1937
+ "rules_extracted": 12
1938
+ }
1939
+ },
1940
+ "TabPrinter::toggle_options": {
1941
+ "locals": {
1942
+ "extruders": "m_config->option<ConfigOptionEnumsGeneric>(\"extruder_type\")",
1943
+ "get_index_for_extruder": "[this, &extruders, &nozzle_volumes, variant_keys = extruder_variant_keys[m_type >= Preset::TYPE_COUNT ? Preset::TYPE_PRINT : m_type]](int extruder_id, NozzleVolumeType nozzle_type) { return m_config->get_index_for_extruder(extruder_id + 1, variant_keys.first, ExtruderType(extruders->values[extruder_id]), nozzle_type, variant_keys.second); }",
1944
+ "gcf_is_marlin_firmware": "gcf == GCodeFlavor::gcfMarlinFirmware",
1945
+ "support_parallel_printheads": "printer_cfg.opt_bool(\"support_parallel_printheads\")",
1946
+ "supports_wipe_tower_2": "!is_BBL_printer && m_config->opt_enum<WipeTowerType>(\"wipe_tower_type\") == WipeTowerType::Type2",
1947
+ "bSEMM": "m_config->opt_bool(\"single_extruder_multi_material\")",
1948
+ "have_retract_length": "m_config->opt_float(\"retraction_length\", variant_index) > 0",
1949
+ "use_firmware_retraction": "m_config->opt_bool(\"use_firmware_retraction\")",
1950
+ "retraction": "have_retract_length || use_firmware_retraction",
1951
+ "wipe": "static_cast<ConfigOptionBools*>(m_config->option(\"wipe\")->clone())",
1952
+ "retract_before_wipe": "static_cast<ConfigOptionPercents*>(m_config->option(\"retract_before_wipe\")->clone())",
1953
+ "toolchange_retraction": "m_config->opt_float(\"retract_length_toolchange\", variant_index) > 0",
1954
+ "gcf": "m_config->option<ConfigOptionEnum<GCodeFlavor>>(\"gcode_flavor\")->value",
1955
+ "gcf_is_marlin_legacy": "gcf == GCodeFlavor::gcfMarlinLegacy",
1956
+ "gcf_is_klipper": "gcf == GCodeFlavor::gcfKlipper",
1957
+ "gcf_is_reprap_firmware": "gcf == GCodeFlavor::gcfRepRapFirmware",
1958
+ "silent_mode": "m_config->opt_bool(\"silent_mode\")",
1959
+ "enable_jerk": "!gcf_is_marlin_firmware",
1960
+ "emittable_limits": "gcf_is_marlin_legacy || gcf_is_marlin_firmware || gcf_is_reprap_firmware",
1961
+ "resonance_avoidance": "m_config->opt_bool(\"resonance_avoidance\")",
1962
+ "input_shaping_compatible": "gcf_is_marlin_firmware || gcf_is_reprap_firmware",
1963
+ "emit_machine_limits_to_gcode": "m_config->opt_bool(\"emit_machine_limits_to_gcode\")",
1964
+ "input_shaping_emit": "emit_machine_limits_to_gcode && m_config->opt_bool(\"input_shaping_emit\")",
1965
+ "tab": "wxGetApp().plate_tab) { tab->m_config->apply(*m_config); tab->update_extruder_variants(); } for (auto tab : wxGetApp().model_tabs_list) { tab->m_config->apply(*m_config); tab->update_extruder_variants(); } } update()",
1966
+ "current_dirty": "! delete_current && m_presets->current_is_dirty()",
1967
+ "print_tab": "m_presets->type() == Preset::TYPE_PRINT || m_presets->type() == Preset::TYPE_SLA_PRINT",
1968
+ "printer_tab": "m_presets->type() == Preset::TYPE_PRINTER",
1969
+ "old_preset_dirty": "dependent.current_is_dirty()",
1970
+ "new_preset_compatible": "is_compatible_with_print(dependent.get_edited_preset_with_vendor_profile(), m_presets->get_preset_with_vendor_profile(*m_presets->find_preset(preset_name, true)), printer_profile)",
1971
+ "no_transfer_variant": "cur_opt2->values != to_select_opt2->values",
1972
+ "is_selected": "m_presets->select_preset_by_name(preset_name, false) || delete_current",
1973
+ "update_compatible_type": "[delete_current](bool technology_changed, bool on_page, bool show_incompatible_presets) { return (delete_current || technology_changed) ? PresetSelectCompatibleType::Always : on_page ? PresetSelectCompatibleType::Never : show_incompatible_presets ? PresetSelectCompatibleType::OnlyIfWasCompatible : PresetSelectCompatibleType::Always; }",
1974
+ "show": "m_show_btn_incompatible_presets && m_type != Slic3r::Preset::TYPE_PRINTER",
1975
+ "is_empty": "m_config->option<ConfigOptionStrings>(\"compatible_prints\")->values.empty()",
1976
+ "add": "! preset.is_default && ! preset.is_external",
1977
+ "variants": "m_config->option<ConfigOptionStrings>(\"filament_extruder_variant\")",
1978
+ "index": "m_variant_combo ? extruder_id : get_index_for_extruder(extruder_id == -1 ? 0 : extruder_id)",
1979
+ "dirty": "opt.substr(n) == from_str",
1980
+ "option": "dynamic_cast<ConfigOptionVectorBase*>(m_config->option(key))",
1981
+ "has_any": "! m_config->option<ConfigOptionStrings>(deps.key_list)->values.empty()",
1982
+ "opt_key2": "opt_key",
1983
+ "iter": "m_opt_id_map.find(opt_key + '#' + std::to_string(opt_index - 256))",
1984
+ "line": "Line{ m_config->def()->get(\"material_correction\")->full_label, \"\" }"
1985
+ },
1986
+ "rules": [
1987
+ {
1988
+ "fields": [
1989
+ "enable_filament_ramming",
1990
+ "cooling_tube_retraction",
1991
+ "cooling_tube_length",
1992
+ "parking_pos_retraction",
1993
+ "extra_loading_move",
1994
+ "high_current_on_filament_swap"
1995
+ ],
1996
+ "enable_if": "supports_wipe_tower_2",
1997
+ "kind": "option",
1998
+ "line": 6063
1999
+ },
2000
+ {
2001
+ "fields": [
2002
+ "change_filament_gcode"
2003
+ ],
2004
+ "enable_if": "have_multiple_extruders",
2005
+ "kind": "option",
2006
+ "line": 6026
2007
+ },
2008
+ {
2009
+ "fields": [
2010
+ "extruders_count"
2011
+ ],
2012
+ "enable_if": "!bSEMM",
2013
+ "kind": "option",
2014
+ "line": 6079
2015
+ },
2016
+ {
2017
+ "fields": [
2018
+ "manual_filament_change"
2019
+ ],
2020
+ "enable_if": "bSEMM",
2021
+ "kind": "option",
2022
+ "line": 6080
2023
+ },
2024
+ {
2025
+ "fields": [
2026
+ "purge_in_prime_tower"
2027
+ ],
2028
+ "enable_if": "bSEMM && supports_wipe_tower_2",
2029
+ "kind": "option",
2030
+ "line": 6081
2031
+ },
2032
+ {
2033
+ "fields": [
2034
+ "tool_change_on_wipe_tower"
2035
+ ],
2036
+ "enable_if": "!bSEMM && supports_wipe_tower_2 && extruders_count > 1",
2037
+ "kind": "option",
2038
+ "line": 6087
2039
+ },
2040
+ {
2041
+ "fields": [
2042
+ "extruder_printable_area"
2043
+ ],
2044
+ "enable_if": "false, i",
2045
+ "kind": "option",
2046
+ "line": 6099
2047
+ },
2048
+ {
2049
+ "fields": [
2050
+ "extruder_printable_height"
2051
+ ],
2052
+ "enable_if": "false, i",
2053
+ "kind": "option",
2054
+ "line": 6101
2055
+ },
2056
+ {
2057
+ "fields": [
2058
+ "retract_length"
2059
+ ],
2060
+ "enable_if": "!use_firmware_retraction, i",
2061
+ "kind": "option",
2062
+ "line": 6106
2063
+ },
2064
+ {
2065
+ "fields": [
2066
+ "retraction_minimum_travel"
2067
+ ],
2068
+ "enable_if": "have_retract_length || use_firmware_retraction, i",
2069
+ "kind": "option",
2070
+ "line": 6110
2071
+ },
2072
+ {
2073
+ "fields": [
2074
+ "retract_before_wipe"
2075
+ ],
2076
+ "enable_if": "wipe && !is_approx(retract_after_wipe, 100.), i",
2077
+ "kind": "option",
2078
+ "line": 6139
2079
+ },
2080
+ {
2081
+ "fields": [
2082
+ "retract_after_wipe"
2083
+ ],
2084
+ "enable_if": "wipe && !is_approx(retract_before_wipe, 100.), i",
2085
+ "kind": "option",
2086
+ "line": 6140
2087
+ },
2088
+ {
2089
+ "fields": [
2090
+ "wipe_distance"
2091
+ ],
2092
+ "enable_if": "wipe, i",
2093
+ "kind": "option",
2094
+ "line": 6166
2095
+ },
2096
+ {
2097
+ "fields": [
2098
+ "retract_length_toolchange"
2099
+ ],
2100
+ "enable_if": "have_multiple_extruders, i",
2101
+ "kind": "option",
2102
+ "line": 6168
2103
+ },
2104
+ {
2105
+ "fields": [
2106
+ "retract_restart_extra_toolchange"
2107
+ ],
2108
+ "enable_if": "have_multiple_extruders && toolchange_retraction, i",
2109
+ "kind": "option",
2110
+ "line": 6171
2111
+ },
2112
+ {
2113
+ "fields": [
2114
+ "long_retractions_when_cut"
2115
+ ],
2116
+ "enable_if": "!use_firmware_retraction && m_config->opt_int(\"enable_long_retraction_when_cut\"), i",
2117
+ "kind": "option",
2118
+ "line": 6173
2119
+ },
2120
+ {
2121
+ "fields": [
2122
+ "travel_slope"
2123
+ ],
2124
+ "enable_if": "m_config->opt_enum(\"z_hop_types\", i) != ZHopType::zhtNormal, i",
2125
+ "kind": "option",
2126
+ "line": 6176
2127
+ },
2128
+ {
2129
+ "fields": [
2130
+ "machine_max_acceleration_travel"
2131
+ ],
2132
+ "enable_if": "!gcf_is_marlin_legacy && !gcf_is_klipper, i",
2133
+ "kind": "option",
2134
+ "line": 6192
2135
+ },
2136
+ {
2137
+ "fields": [
2138
+ "machine_max_junction_deviation"
2139
+ ],
2140
+ "enable_if": "gcf_is_marlin_firmware, i",
2141
+ "kind": "option",
2142
+ "line": 6195
2143
+ },
2144
+ {
2145
+ "fields": [
2146
+ "machine_max_jerk_x"
2147
+ ],
2148
+ "enable_if": "enable_jerk, i",
2149
+ "kind": "option",
2150
+ "line": 6210
2151
+ },
2152
+ {
2153
+ "fields": [
2154
+ "machine_max_jerk_y"
2155
+ ],
2156
+ "enable_if": "enable_jerk, i",
2157
+ "kind": "option",
2158
+ "line": 6211
2159
+ },
2160
+ {
2161
+ "fields": [
2162
+ "machine_max_jerk_z"
2163
+ ],
2164
+ "enable_if": "enable_jerk, i",
2165
+ "kind": "option",
2166
+ "line": 6212
2167
+ },
2168
+ {
2169
+ "fields": [
2170
+ "machine_max_jerk_e"
2171
+ ],
2172
+ "enable_if": "enable_jerk, i",
2173
+ "kind": "option",
2174
+ "line": 6213
2175
+ },
2176
+ {
2177
+ "fields": [
2178
+ "emit_machine_limits_to_gcode"
2179
+ ],
2180
+ "enable_if": "emittable_limits",
2181
+ "kind": "option",
2182
+ "line": 6217
2183
+ },
2184
+ {
2185
+ "fields": [
2186
+ "min_resonance_avoidance_speed"
2187
+ ],
2188
+ "enable_if": "resonance_avoidance",
2189
+ "kind": "option",
2190
+ "line": 6220
2191
+ },
2192
+ {
2193
+ "fields": [
2194
+ "max_resonance_avoidance_speed"
2195
+ ],
2196
+ "enable_if": "resonance_avoidance",
2197
+ "kind": "option",
2198
+ "line": 6221
2199
+ },
2200
+ {
2201
+ "fields": [
2202
+ "input_shaping_emit"
2203
+ ],
2204
+ "enable_if": "emit_machine_limits_to_gcode",
2205
+ "kind": "option",
2206
+ "line": 6231
2207
+ },
2208
+ {
2209
+ "fields": [
2210
+ "input_shaping_type"
2211
+ ],
2212
+ "enable_if": "input_shaping_emit",
2213
+ "kind": "option",
2214
+ "line": 6233
2215
+ },
2216
+ {
2217
+ "fields": [
2218
+ "input_shaping_freq_x"
2219
+ ],
2220
+ "enable_if": "input_shaping_emit",
2221
+ "kind": "option",
2222
+ "line": 6234
2223
+ },
2224
+ {
2225
+ "fields": [
2226
+ "input_shaping_freq_y"
2227
+ ],
2228
+ "enable_if": "input_shaping_emit && !gcf_is_reprap_firmware",
2229
+ "kind": "option",
2230
+ "line": 6235
2231
+ },
2232
+ {
2233
+ "fields": [
2234
+ "input_shaping_damp_x"
2235
+ ],
2236
+ "enable_if": "input_shaping_emit",
2237
+ "kind": "option",
2238
+ "line": 6236
2239
+ },
2240
+ {
2241
+ "fields": [
2242
+ "input_shaping_damp_y"
2243
+ ],
2244
+ "enable_if": "input_shaping_emit && !gcf_is_reprap_firmware",
2245
+ "kind": "option",
2246
+ "line": 6237
2247
+ }
2248
+ ],
2249
+ "stats": {
2250
+ "toggle_calls_in_source": 35,
2251
+ "rules_extracted": 32
2252
+ }
2253
+ },
2254
+ "TabSLAMaterial::toggle_options": {
2255
+ "locals": {
2256
+ "is_visible": "m_config->def()->get(\"support_object_elevation\")->mode <= m_mode",
2257
+ "elev": "!m_config->opt_bool(\"pad_enable\") || !m_config->opt_bool(\"pad_around_object\")"
2258
+ },
2259
+ "rules": [],
2260
+ "stats": {
2261
+ "toggle_calls_in_source": 0,
2262
+ "rules_extracted": 0
2263
+ }
2264
+ },
2265
+ "TabSLAPrint::toggle_options": {
2266
+ "locals": {
2267
+ "cb_toggle_field": "[this](const t_config_option_key& opt_key, bool toggle, int opt_index) { return toggle_option(opt_key, toggle, opt_index >= 0 ? opt_index + 256 : opt_index); }",
2268
+ "cb_toggle_line": "[this](const t_config_option_key &opt_key, bool toggle, int opt_index) { return toggle_line(opt_key, toggle, opt_index >= 0 ? opt_index + 256 : opt_index); }",
2269
+ "cb_value_change": "[this](const std::string& opt_key, const boost::any& value) { return on_value_change(opt_key, value); }"
2270
+ },
2271
+ "rules": [],
2272
+ "stats": {
2273
+ "toggle_calls_in_source": 1,
2274
+ "rules_extracted": 0
2275
+ }
2276
+ }
2277
+ }