Files
OrcaSlicer/resources/profiles/Snapmaker/machine/Snapmaker U1 (0.6 nozzle).json
T
Kris Austin d16ca97380 Snapmaker U1: set the top cover purifier mode and match Snapmaker's start G-code (#16590)
Port the U1 top cover purifier mode and the related start G-code
changes from Snapmaker's Orca (Snapmaker/OrcaSlicer#504 and
Snapmaker/OrcaSlicer#1005, as of 8931178229).

The start G-code sends SET_PURIFIER_MODE for strong cooling, weak
cooling or keep warm, picked from the lowest softening temperature of
the filaments used through min_vitrification_temperature, with
Snapmaker's thresholds and parameters. It also pre-extrudes the first
tool, and turns the part fan off for probing and back on for nozzle
cleaning.

U1 filament presets use Snapmaker's softening temperatures. U1 presets
that have no U1 version in Snapmaker's Orca use the value Snapmaker
gives that material on the U1.
2026-10-18 21:35:32 -05:00

328 lines
12 KiB
JSON

{
"type": "machine",
"name": "Snapmaker U1 (0.6 nozzle)",
"inherits": "fdm_U1",
"from": "system",
"setting_id": "1OseO7RSPgE4CRKO",
"instantiation": "true",
"printer_model": "Snapmaker U1",
"printer_variant": "0.6",
"auxiliary_fan": "1",
"change_filament_gcode": ";===== date: 20260607 =====================\n; Change Tool[previous_extruder] -> Tool[next_extruder] (layer [layer_num])\n; max_layer_z [max_layer_z]\n; max_print_height [max_print_height]\n; print_sequence [print_sequence]\n\n{\nlocal move_z = 1.5;\nlocal max_speed_toolchange = 350.0;\nlocal wait_for_extruder_temp = true;\nposition[2] = position[2] + 2.0;\nlocal speed_toolchange = max_speed_toolchange;\n\nif travel_speed < max_speed_toolchange then\n speed_toolchange = travel_speed;\nendif\n\nif print_sequence == \"by object\" then\n\n if max_layer_z < ((max_print_height - z_offset) - 2) then\n move_z = z_offset + min(((max_layer_z - z_offset) + 2), max_print_height);\n endif\n\nendif\n\n\"G91\nG1 Z\" + move_z + \" F600\nG90\n\";\n\"G1 F\" + (speed_toolchange * 60) + \"\n\";\nif wait_for_extruder_temp and not((layer_num < 0) and (next_extruder == initial_tool)) then\n \"\n\";\n \"; \" + layer_num + \"\n\";\n if layer_num == 0 then\n \"M109 S\" + first_layer_temperature[next_extruder] + \" T\" + next_extruder + \"\n\";\n else\n \"M109 S\" + temperature[next_extruder] + \" T\" + next_extruder + \"\n\";\n endif\nendif\n\"M400\" + \"\n\";\n\"T\" + next_extruder + \"\n\";\nif filament_type[next_extruder] == \"PVA\" then\n\"SET_VELOCITY_LIMIT ACCEL=3000\n\";\nelse\nendif\nif previous_extruder != next_extruder and initial_extruder != next_extruder then\n\"SM_PRINT_PREEXTRUDE_FILAMENT INDEX=\" + next_extruder + \"\n\";\nendif\n\"G90\n\";\n}\n",
"deretraction_speed": [
"30",
"30",
"30",
"30",
"30",
"30",
"30",
"30"
],
"extruder_colour": [
"#FCE94F",
"#FCE94F",
"#FCE94F",
"#FCE94F"
],
"extruder_offset": [
"0x0",
"0x0",
"0x0",
"0x0"
],
"host_type": "octoprint",
"long_retractions_when_cut": [
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0"
],
"machine_end_gcode": ";===== date: 20260605 =====================\n; layer [layer_num]\n; max_layer_z [max_layer_z]\n; print_sequence [print_sequence]\n\n{if print_sequence == \"by object\"}\n{\nlocal move_z = max_print_height;\n\nif max_layer_z < ((max_print_height - z_offset) - 2) then\n move_z = z_offset + min(((max_layer_z - z_offset) + 2), max_print_height);\nendif\n}\n\nG91\nG1 X2 Y2 Z1 F24000\nG90\nG1 Z{move_z} F600\n{endif}\n\nPRINT_END\nTIMELAPSE_STOP\n\n; U1 nozzle flow metadata, in logical filament order\n; filament_volume_type = {(nozzle_volume_type[filament_map[0]-1] == 1 ? \"high_flow\" : \"standard\")}{if size(filament_type) > 1},{(nozzle_volume_type[filament_map[1]-1] == 1 ? \"high_flow\" : \"standard\")}{endif}{if size(filament_type) > 2},{(nozzle_volume_type[filament_map[2]-1] == 1 ? \"high_flow\" : \"standard\")}{endif}{if size(filament_type) > 3},{(nozzle_volume_type[filament_map[3]-1] == 1 ? \"high_flow\" : \"standard\")}{endif}\n",
"machine_max_jerk_z": [
"3",
"0.4",
"3",
"0.4",
"3",
"0.4",
"3",
"0.4",
"3",
"0.4",
"3",
"0.4",
"3",
"0.4",
"3",
"0.4"
],
"machine_max_speed_e": [
"30",
"25",
"30",
"25",
"30",
"25",
"30",
"25",
"30",
"25",
"30",
"25",
"30",
"25",
"30",
"25"
],
"machine_max_speed_z": [
"20",
"12",
"20",
"12",
"20",
"12",
"20",
"12",
"20",
"12",
"20",
"12",
"20",
"12",
"20",
"12"
],
"machine_start_gcode": "SET_PRINT_AUTO_BED_LEVELING ENABLE=1\nSET_TIME_LAPSE_CAMERA ENABLE=1\n;===== date: 20260128 =====================\n\nPRINT_START\nDEFECT_DETECTION_START\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} CURRENT_LAYER=0\nTIMELAPSE_START\nM140 S{bed_temperature_initial_layer_single}\nM104 T{initial_extruder} S140\nM204 S10000\n;===== top cover purifier =====\n{if min_vitrification_temperature <= 50}\nSET_PURIFIER_MODE MODE=1 DESIRE_TEMP=42 ALARM_TEMP=48 FAN_SPEED=0.6 DELAY_OFF=0 ; strong cooling\n{elsif min_vitrification_temperature <= 70}\nSET_PURIFIER_MODE MODE=1 DESIRE_TEMP=45 ALARM_TEMP=51 FAN_SPEED=0.6 DELAY_OFF=0 ; weak cooling\n{else}\nSET_PURIFIER_MODE MODE=3 DESIRE_TEMP=45 FAN_SPEED=0.6 DELAY_OFF=600 ; keep warm\n{endif}\nG28 X Y\nDEFECT_DETECT_NOODLE_FIRST\n;===== 床面异物检测 ========\nT{initial_extruder}\nG90\nDEFECT_DETECTION_DETECT_BED\n;===== 取放头检测 =================\nSM_PRINT_CHECK_SWITCH_EXTRUDER\n\n;===== 自动进料 & 挤出流量 & 预挤出 ======================\nSM_PRINT_EXTRUDER_PREHEAT EXTRUDER=1 TEMP=140\nSM_PRINT_AUTO_FEED EXTRUDER=0\nSM_PRINT_FLOW_CALIBRATE EXTRUDER=0\nSM_PRINT_EXTRUDER_PREHEAT EXTRUDER=2 TEMP=140\nSM_PRINT_AUTO_FEED EXTRUDER=1\nSM_PRINT_FLOW_CALIBRATE EXTRUDER=1\nSM_PRINT_EXTRUDER_PREHEAT EXTRUDER=3 TEMP=140\nSM_PRINT_AUTO_FEED EXTRUDER=2\nSM_PRINT_FLOW_CALIBRATE EXTRUDER=2\nSM_PRINT_AUTO_FEED EXTRUDER=3\nSM_PRINT_FLOW_CALIBRATE EXTRUDER=3\nM104 S0 T0 A0\nM104 S0 T1 A0\nM104 S0 T2 A0\nM104 S0 T3 A0\n\n;==== 预挤出耗材 =====\nM104 T{initial_extruder} S{nozzle_temperature[initial_extruder]}\nT{initial_extruder}\nM109 T{initial_extruder} S{nozzle_temperature[initial_extruder]}\nSM_PRINT_PREEXTRUDE_FILAMENT INDEX={initial_extruder}\nM104 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90}\n\n;===== 粗回零 =================\nT{initial_extruder}\nM106 S255\nM106 P2 S0\nMOVE_TO_DISCARD_FILAMENT_POSITION\nM109 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90}\nROUGHLY_CLEAN_NOZZLE_WITH_DISCARD\nMOVE_TO_XY_IDLE_POSITION_EXTRUDER\nM107\nG28 Z I140 J140\n\n;===== 检测钢板 =================\nM107\nDETECT_BED_PLATE\n\n;===== 深度清洁喷嘴 =================\nM106 S255\nG90\nG0 Z5 F10000\nMOVE_TO_DISCARD_FILAMENT_POSITION\nM109 S{nozzle_temperature[initial_extruder] - 50}\nROUGHLY_CLEAN_NOZZLE\nMOVE_TO_XY_IDLE_POSITION_EXTRUDER\nFINELY_CLEAN_NOZZLE_STAGE_1\nM104 S{nozzle_temperature[initial_extruder] - 90}\nG0 Z5 F10000\nMOVE_TO_DISCARD_FILAMENT_POSITION\nROUGHLY_CLEAN_NOZZLE\nMOVE_TO_XY_IDLE_POSITION_EXTRUDER\nFINELY_CLEAN_NOZZLE_STAGE_2\n\n;===== 精回零 =================\nM106 S255\nM109 S{nozzle_temperature[initial_extruder] - 90}\nM190 S{bed_temperature_initial_layer_single}\nM107 P2\nG90\nG0 Z5 F10000\nWAIT_CHAMBER_TEMP TIMEOUT=180\nM107\n{if curr_bed_type==\"High Temp Plate\"} \nG28 Z Z_OFFSET -0.07 \n{else} \nG28 Z \n{endif} \n\n\n;===== 热床调平 =================\nM107\n{if curr_bed_type==\"High Temp Plate\"} \n; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally\n; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 Z_OFFSET=-0.07\n{else} \n; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally\n; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic\nBED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0\n{endif} \n\n\n;===== 画起始线 =================\nG90\nG1 Z1.5\nG0 X85 Y1 Z2 F18000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nM83\nG1 X185 E15 F360\nG1 Z1.5\n\nG90\nM106 S0",
"machine_tool_change_time": "5",
"max_layer_height": [
"0.42",
"0.42",
"0.42",
"0.42"
],
"min_layer_height": [
"0.12",
"0.12",
"0.12",
"0.12"
],
"nozzle_diameter": [
"0.6",
"0.6",
"0.6",
"0.6"
],
"nozzle_type": [
"stainless_steel",
"stainless_steel",
"stainless_steel",
"stainless_steel",
"stainless_steel",
"stainless_steel",
"stainless_steel",
"stainless_steel"
],
"printable_area": [
"0.5x1",
"270.5x1",
"270.5x271",
"0.5x271"
],
"printable_height": "270.05",
"retract_before_wipe": [
"0%",
"0%",
"0%",
"0%",
"0%",
"0%",
"0%",
"0%"
],
"retract_length_toolchange": [
"10",
"10",
"10",
"10",
"10",
"10",
"10",
"10"
],
"retract_lift_above": [
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0"
],
"retract_lift_below": [
"269",
"269",
"269",
"269",
"269",
"269",
"269",
"269"
],
"retract_lift_enforce": [
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces",
"All Surfaces"
],
"retract_restart_extra": [
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0"
],
"retract_restart_extra_toolchange": [
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0"
],
"retract_when_changing_layer": [
"1",
"1",
"1",
"1",
"1",
"1",
"1",
"1"
],
"retraction_distances_when_cut": [
"18",
"18",
"18",
"18",
"18",
"18",
"18",
"18"
],
"retraction_length": [
"1.4",
"1.4",
"1.4",
"1.4",
"1.4",
"1.4",
"1.4",
"1.4"
],
"retraction_minimum_travel": [
"3",
"3",
"3",
"3",
"3",
"3",
"3",
"3"
],
"retraction_speed": [
"30",
"30",
"30",
"30",
"30",
"30",
"30",
"30"
],
"thumbnails": "48x48/PNG, 300x300/PNG",
"travel_slope": [
"3",
"3",
"3",
"3",
"3",
"3",
"3",
"3"
],
"wipe": [
"1",
"1",
"1",
"1",
"1",
"1",
"1",
"1"
],
"wipe_distance": [
"1",
"1",
"1",
"1",
"1",
"1",
"1",
"1"
],
"z_hop": [
"0.4",
"0.4",
"0.4",
"0.4",
"0.4",
"0.4",
"0.4",
"0.4"
],
"z_hop_types": [
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift",
"Auto Lift"
],
"enable_filament_ramming": "0",
"extruder_clearance_height_to_rod": "27.5",
"extruder_clearance_radius": "72.5",
"machine_load_filament_time": "0",
"machine_unload_filament_time": "0",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\nTIMELAPSE_TAKE_FRAME\nDEFECT_DETECTION_DETECT",
"machine_pause_gcode": "M600",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nSET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} CURRENT_LAYER={layer_num+1}",
"nozzle_volume": [
"143",
"143",
"143",
"143",
"143",
"143",
"143",
"143"
],
"default_print_profile": "0.30 Standard @Snapmaker U1 (0.6 nozzle)"
}