{
    "type": "machine",
    "name": "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool",
    "inherits": "fdm_machine_common",
    "from": "system",
    "setting_id": "GM001",
    "instantiation": "true",
    "printer_model": "D12 230 PRO SMARTPAD MONO DUAL PoopTool",
    "default_print_profile": "0.20mm Standard @Wanhao-D12-230 PoopTool",
    "default_filament_profile": [
        "YUMI PLA Bowden"
    ],
    "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0",
    "extruder_clearance_height_to_lid": "140",
    "extruder_clearance_height_to_rod": "36",
    "extruder_clearance_radius": "65",
    "nozzle_height": "4",
    "thumbnails": "48x48/PNG, 300x300/PNG",
    "wipe_distance": [
        "2"
    ],
    "z_hop_types": [
        "Auto Lift"
    ],
    "nozzle_diameter": [
        "0.4"
    ],
    "z_hop": [
        "0.4"
    ],
    "extra_loading_move": "-2",
    "printable_area": [
        "0x0",
        "230x0",
        "230x230",
        "0x230"
    ],
    "printable_height": "240",
    "nozzle_type": "brass",
    "auxiliary_fan": "0",
    "deretraction_speed": [
        "25"
    ],
    "enable_filament_ramming": "0",
    "gcode_flavor": "klipper",
    "machine_max_acceleration_e": [
        "6000"
    ],
    "machine_max_acceleration_extruding": [
        "10000"
    ],
    "machine_max_acceleration_retracting": [
        "5000"
    ],
    "machine_max_acceleration_travel": [
        "5000",
        "500"
    ],
    "machine_max_acceleration_x": [
        "1200"
    ],
    "machine_max_acceleration_y": [
        "1000"
    ],
    "machine_max_acceleration_z": [
        "500"
    ],
    "machine_max_speed_e": [
        "50"
    ],
    "machine_max_speed_x": [
        "400"
    ],
    "machine_max_speed_y": [
        "400"
    ],
    "machine_max_speed_z": [
        "12"
    ],
    "machine_max_jerk_e": [
        "2.5"
    ],
    "machine_max_jerk_x": [
        "14"
    ],
    "machine_max_jerk_y": [
        "14"
    ],
    "machine_max_jerk_z": [
        "0.3"
    ],
    "max_layer_height": [
        "0.32"
    ],
    "min_layer_height": [
        "0.08"
    ],
    "printer_variant": "0.4",
    "retract_before_wipe": [
        "0%"
    ],
    "retraction_length": [
        "5"
    ],
    "retraction_minimum_travel": [
        "2"
    ],
    "retraction_speed": [
        "25"
    ],
    "retract_length_toolchange": [
        "0"
    ],
    "retract_when_changing_layer": [
        "0"
    ],
    "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG91                     ; Mode déplacement relatif\nG1 E-2 F300             ; Retrait léger du filament pour éviter le suintement\nG1 Z10 F1200             ; Monte la tête de 10 mm\nG90                     ; Retour en position absolue\nG1 X0 Y200 F3000         ; Déplace la tête vers l'arrière pour dégager la pièce\nM104 S0                  ; Éteint la chauffe de la buse\nM140 S0                  ; Éteint la chauffe du plateau\nM107                     ; Arrête tous les ventilateurs\nM106 S0 P3               ; Arrête le ventilateur de la carte mère\nM106 S0 P2               ; Arrête le ventilateur auxiliaire\nM84 X Y E                ; Désactive les moteurs des axes X, Y et de l'extrudeur\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000",
    "machine_pause_gcode": "PAUSE",
    "change_filament_gcode": ";;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\nSET_VELOCITY_LIMIT ACCEL=20000 ACCEL_TO_DECEL=6000\nG1 E-25 F2000                     ; Rétraction initiale normale\nM106 P1 S60                      ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F6000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200    ; Remontée\nG1 X{print_bed_max[0] + 25} F6000 ; Déplacement vers zone de purge\nG4 P3000                         ; Pause\n\nG1 E-60 F2000                    ; Deuxième rétraction p\nG92 E0                           ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0                          ; Stop ventilateur\nT[next_extruder]                ; Changement d’outil \nG1 E60 F2000 \nG1 E25 F600                      ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0                           ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length / 1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255                        ; Ventilateur à pleine vitesse\nG4 P5000                         ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1.5 F3000\nG92 E0\n;;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\n;M104 S[nozzle_temperature_range_high]\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder]  CURRENT=0.5 HOLDCURRENT=0.5\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder]  CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder]  CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder]  CURRENT=0.8 HOLDCURRENT=0.4\n;G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000",
    "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21                                ; set metrics values\nM104 S[nozzle_temperature_initial_layer]               ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single]           ; set bed temperature\nG91                                ; set relative positioning mode\nG28                                ; home\nG90                                ; set absolute positioning mode\nG1 X0 Y0 F3000                      ; park head\nM117                                ; Purge extrudeur\nG92 E0                             ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer]                         ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single]            ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000                      ; Prépare la buse à une petite hauteur\nM83                                ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000     ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24  ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000     ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24  ; Ligne 2\n\nG1 E-5 F1800                                     ; Rétraction\nM82                                              ; Positionnement absolu pour l'extrudeur\nG92 E0                                           ; Reset extrusion\nG1 Z1.0 F3000                                    ; Légère montée"
}