{
    "version": 1,
    "id": "dual_extrusion",
    "name": "Dual Extrusion Base File",
    "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
    "inherits": "fdmprinter.json",

    "visible": false,

    "machine_settings": {
        "machine_use_extruder_offset_to_offset_coords": { "default": false },

        "machine_nozzle_offset_x": { "default": 0, "SEE_machine_extruder_trains": true },
        "machine_nozzle_offset_y": { "default": 0, "SEE_machine_extruder_trains": true  },
        "machine_extruder_start_code": { "default": "", "SEE_machine_extruder_trains": true  },
        "machine_extruder_start_pos_abs": { "default": false, "SEE_machine_extruder_trains": true   },
        "machine_extruder_start_pos_x": { "default": 0, "SEE_machine_extruder_trains": true   },
        "machine_extruder_start_pos_y": { "default": 0, "SEE_machine_extruder_trains": true   },
        "machine_extruder_end_pos_abs": { "default": false, "SEE_machine_extruder_trains": true   },
        "machine_extruder_end_pos_x": { "default": 0, "SEE_machine_extruder_trains": true   },
        "machine_extruder_end_pos_y": { "default": 0, "SEE_machine_extruder_trains": true   },
        "machine_extruder_end_code": { "default": "", "SEE_machine_extruder_trains": true  }
    },
    "overrides": {
        "speed_print": {
            "children": {
                "speed_prime_tower": {
                    "label": "Prime Tower Speed",
                    "description": "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal.",
                    "unit": "mm/s",
                    "type": "float",
                    "min_value": "0.1",
                    "max_value_warning": "150",
                    "default": 60,
                    "visible": false,
                    "enabled": "prime_tower_enable",
                    "global_only": true
                }
            }
        },
        "line_width": {
            "children": {
                "prime_tower_line_width": {
                    "label": "Prime Tower Line Width",
                    "description": "Width of a single prime tower line.",
                    "unit": "mm",
                    "min_value": "0.0001",
                    "min_value_warning": "0.2",
                    "max_value_warning": "5",
                    "default": 0.4,
                    "type": "float",
                    "visible": false,
                    "enabled": "prime_tower_enable",
                    "global_only": true
                }
            }
        }
    },
    "categories": {
        "dual": {
            "label": "Dual Extrusion",
            "visible": true,
            "icon": "category_dual",
            "settings": {
                "extruder_nr": {
                    "label": "Extruder",
                    "description": "The extruder train used for printing. This is used in multi-extrusion.",
                    "type": "int",
                    "default": 0,
                    "min_value": "0",
                    "max_value": "16",
                    "always_visible": true,

                    "children": {
                        "adhesion_extruder_nr": {
                            "label": "Platform Adhesion Extruder",
                            "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.",
                            "type": "int",
                            "default": 0,
                            "min_value": "0",
                            "max_value": "16",
                            "global_only": true
                        },
                        "support_extruder_nr": {
                            "label": "Support Extruder",
                            "description": "The extruder train to use for printing the support. This is used in multi-extrusion.",
                            "type": "int",
                            "default": 0,
                            "min_value": "0",
                            "max_value": "16",
                            "global_only": true
                        },
                        "support_extruder_nr_layer_0": {
                            "label": "First Layer Support Extruder",
                            "description": "The extruder train to use for printing the first layer of support. This is used in multi-extrusion.",
                            "type": "int",
                            "default": 0,
                            "min_value": "0",
                            "max_value": "16",
                            "inherit_function": "support_extruder_nr",
                            "global_only": true
                        },
                        "support_roof_extruder_nr": {
                            "label": "Support Roof Extruder",
                            "description": "The extruder train to use for printing the roof of the support. This is used in multi-extrusion.",
                            "type": "int",
                            "default": 0,
                            "min_value": "0",
                            "max_value": "16",
                            "inherit_function": "support_extruder_nr",
                            "enabled": "support_roof_enable",
                            "global_only": true
                        }
                    }
                },
                "prime_tower_enable": {
                    "label": "Enable Prime Tower",
                    "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.",
                    "type": "boolean",
                    "visible": true,
                    "default": false,
                    "global_only": true
                },
                "prime_tower_size": {
                    "label": "Prime Tower Size",
                    "description": "The width of the prime tower.",
                    "visible": false,
                    "type": "float",
                    "unit": "mm",
                    "default": 15,
                    "min_value": "0",
                    "max_value_warning": "20",
                    "inherit_function": "15 if prime_tower_enable else 0",
                    "enabled": "prime_tower_enable",
                    "global_only": true
                },
                "prime_tower_position_x": {
                    "label": "Prime Tower X Position",
                    "description": "The x position of the prime tower.",
                    "visible": false,
                    "type": "float",
                    "unit": "mm",
                    "default": 200,
                    "min_value_warning": "-1000",
                    "max_value_warning": "1000",
                    "enabled": "prime_tower_enable",
                    "global_only": true
                },
                "prime_tower_position_y": {
                    "label": "Prime Tower Y Position",
                    "description": "The y position of the prime tower.",
                    "visible": false,
                    "type": "float",
                    "unit": "mm",
                    "default": 200,
                    "min_value_warning": "-1000",
                    "max_value_warning": "1000",
                    "enabled": "prime_tower_enable",
                    "global_only": true
                },
                "prime_tower_flow": {
                    "label": "Prime Tower Flow",
                    "description": "Flow compensation: the amount of material extruded is multiplied by this value.",
                    "visible": false,
                    "unit": "%",
                    "default": 100,
                    "type": "float",
                    "min_value": "5",
                    "min_value_warning": "50",
                    "max_value_warning": "150",
                    "enabled": "prime_tower_enable",
                    "global_only": true
                },
                "prime_tower_wipe_enabled": {
                    "label": "Wipe Nozzle on Prime tower",
                    "description": "After printing the prime tower with the one nozzle, wipe the oozed material from the other nozzle off on the prime tower.",
                    "type": "boolean",
                    "default": false,
                    "enabled": "prime_tower_enable",
                    "global_only": true
                },
                "ooze_shield_enabled": {
                    "label": "Enable Ooze Shield",
                    "description": "Enable exterior ooze shield. This will create a shell around the object which is likely to wipe a second nozzle if it's at the same height as the first nozzle.",
                    "type": "boolean",
                    "default": false,
                    "global_only": true
                },
                "ooze_shield_angle": {
                    "label": "Ooze Shield Angle",
                    "description": "The maximum angle a part in the ooze shield will have. With 0 degrees being vertical, and 90 degrees being horizontal. A smaller angle leads to less failed ooze shields, but more material.",
                    "unit": "°",
                    "type": "float",
                    "min_value": "0",
                    "max_value": "90",
                    "default": 60,
                    "visible": false,
                    "enabled": "ooze_shield_enabled",
                    "global_only": true
                },
                "ooze_shield_dist": {
                    "label": "Ooze Shields Distance",
                    "description": "Distance of the ooze shield from the print, in the X/Y directions.",
                    "unit": "mm",
                    "type": "float",
                    "min_value": "0",
                    "max_value_warning": "30",
                    "default": 2,
                    "visible": false,
                    "enabled": "ooze_shield_enabled",
                    "global_only": true
                }
            }
        },
        "material": {
            "settings": {                
                "material_standby_temperature": {
                    "label": "Standby Temperature",
                    "description": "The temperature of the nozzle when another nozzle is currently used for printing.",
                    "unit": "°C",
                    "type": "float",
                    "default": 150,
                    "min_value": "0",
                    "max_value_warning": "260",
                    "global_only": "True",
                    "visible": false
                },
                "switch_extruder_retraction_amount": {
                    "label": "Nozzle Switch Retraction Distance",
                    "description": "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone.",
                    "unit": "mm",
                    "type": "float",
                    "default": 16,
                    "min_value_warning": "0",
                    "max_value_warning": "100",
                    "visible": false,
                    "inherit_function": "machine_heat_zone_length",
                    "enabled": "retraction_enable",
                    "global_only": true
                },
                "switch_extruder_retraction_speeds": {
                    "label": "Nozzle Switch Retraction Speed",
                    "description": "The speed at which the filament is retracted. A higher retraction speed works better, but a very high retraction speed can lead to filament grinding.",
                    "unit": "mm/s",
                    "type": "float",
                    "default": 20,
                    "min_value": "0.1",
                    "max_value_warning": "300",
                    "visible": false,
                    "inherit": false,
                    "enabled": "retraction_enable",
                    "global_only": true,
                    "children": {
                        "switch_extruder_retraction_speed": {
                            "label": "Nozzle Switch Retract Speed",
                            "description": "The speed at which the filament is retracted during a nozzle switch retract. ",
                            "unit": "mm/s",
                            "type": "float",
                            "default": 20,
                            "min_value": "0.1",
                            "max_value_warning": "300",
                            "visible": false,
                            "enabled": "retraction_enable",
                            "global_only": true
                        },
                        "switch_extruder_prime_speed": {
                            "label": "Nozzle Switch Prime Speed",
                            "description": "The speed at which the filament is pushed back after a nozzle switch retraction.",
                            "unit": "mm/s",
                            "type": "float",
                            "default": 20,
                            "min_value": "0.1",
                            "max_value_warning": "300",
                            "visible": false,
                            "enabled": "retraction_enable",
                            "global_only": true
                        }
                    }
                }
            }
        }
    }
}
