{ "type": "machine", "name": "D12 300 PRO SMARTPAD MONO DUAL PoopTool 0.4 nozzle", "inherits": "fdm_machine_common", "from": "system", "setting_id": "GM001", "instantiation": "true", "printer_settings_id": "Wanhao France D12 300 PRO SMARTPAD MONO DUAL PoopTool 0.4 nozzle", "printer_model": "D12 300 PRO SMARTPAD MONO DUAL PoopTool", "gcode_flavor": "klipper", "default_print_profile": "0.20mm Standard @Wanhao-D12-300 PoopTool", "nozzle_diameter": [ "0.4" ], "printable_area": [ "0x0", "310x0", "310x310", "0x310" ], "printable_height": "400", "nozzle_type": "brass", "auxiliary_fan": "0", "printer_variant": "0.4", "default_filament_profile": [ "YUMI PLA Bowden" ], "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", "z_hop": [ "0.4" ], "extra_loading_move": "-2", "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" ], "deretraction_speed": [ "25" ], "enable_filament_ramming": "0", "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": [ "200" ], "machine_max_speed_y": [ "200" ], "machine_max_speed_z": [ "15" ], "machine_max_jerk_e": [ "2.5" ], "machine_max_jerk_x": [ "14" ], "machine_max_jerk_y": [ "14" ], "machine_max_jerk_z": [ "0.2" ], "max_layer_height": [ "0.32" ], "min_layer_height": [ "0.08" ], "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" }