mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-08 00:01:09 +00:00
* Add opt-in printer overrides for filament tool-change settings Allow printer presets to define uniform ramming, loading, unloading, cooling, purge, filament scripts and pressure-advance enable settings without duplicating material presets. Apply overrides during preset composition and FDM normalization, and expose the switch in Multimaterial. Keep the feature disabled by default. Omitted or empty override vectors preserve material settings; a single value applies to every filament, including an explicitly empty script. Reject multi-value overrides. Preserve empty float vectors across project serialization and initialize empty nullable filament overrides before resizing them, preventing preset cache generation from accessing an empty vector. Include focused override tests and document the configuration semantics, Prusa MMU3 integration and INDX tool-change behavior. Co-authored-by: Codex <codex@openai.com> * Add Prusa MMU3 and CORE One INDX profiles with shared material tuning Add MK4 MMU3 and four-tool/eight-tool CORE One INDX printer definitions, process presets and printer resources. Reuse ordinary MK4 and CORE One printer/process inheritance while retaining device-specific startup, shutdown, tool-change and wipe-tower behavior. Move uniform MMU3 tip forming and INDX handling into machine filament overrides. Keep MMU3 pressure advance and purge material-specific, retain INDX material tuning, and share surviving materials with migration aliases for retired MMU3 and XL tool-change copies. Preserve unrelated Prusa filament identities, scalar value formats and inheritance rather than applying broad profile cleanup. Validation: Prusa profile checks and all 69 printer smoke slices passed. The final cleanup preserved emitted commands with identical filament selections. Co-authored-by: Codex <codex@openai.com> * Refresh filament controls after loading printer presets Synchronize the plater filament controls after preset loading, even when the internal filament list already matches the nozzle count. Co-authored-by: Codex <codex@openai.com> * Fix nullable Z-hop overrides in Prusa filament variants Represent empty overrides as nil for each inherited extruder variant so the native profile loader preserves machine Z-hop settings. Validation: full profile checks, native loading, and 1,115-printer slicing sweep passed. Co-authored-by: Codex <codex@openai.com> * Separate Prusa profiles from machine-owned filament overrides Retain profile tuning without unsupported machine override keys. Move supporting code, tests and override documentation into a separate feature change. Co-authored-by: Codex <codex@openai.com> * Default INDX tools to hardened high-flow nozzles Use the High Flow variant for every INDX tool and its dedicated filament presets. Raise Generic PLA throughput to 28 mm3/s. Co-authored-by: codex <codex@openai.com> * Use normal filament-change lifts for INDX and MMU3 Avoid duplicate INDX retraction and account for its 12.5-second dock swap in print estimates. Co-authored-by: codex <codex@openai.com> * Set z_hop_types for the machine too * Fix profile check failures in the Prusa CORE One filament presets --------- Co-authored-by: Codex <codex@openai.com> Co-authored-by: SoftFever <103989404+SoftFever@users.noreply.github.com> Co-authored-by: SoftFever <softfeverever@gmail.com>
129 lines
5.7 KiB
JSON
129 lines
5.7 KiB
JSON
{
|
|
"type": "machine",
|
|
"name": "fdm_machine_common_mk4s",
|
|
"inherits": "fdm_machine_common_nextruder",
|
|
"from": "system",
|
|
"instantiation": "false",
|
|
"before_layer_change_gcode": [
|
|
";BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\nM201 X{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))} Y{interpolate_table(extruded_weight_total, (0,4000), (1400,2500), (10000,2500))}\n"
|
|
],
|
|
"change_filament_gcode": [
|
|
""
|
|
],
|
|
"default_filament_profile": "Generic PLA @Prusa MK4S",
|
|
"default_print_profile": "0.20mm SPEED @MK4IS 0.4",
|
|
"deretraction_speed": "25",
|
|
"extruder_clearance_height_to_lid": "220",
|
|
"extruder_clearance_height_to_rod": "14",
|
|
"extruder_clearance_radius": "45",
|
|
"gcode_flavor": "marlin2",
|
|
"host_type": "prusalink",
|
|
"layer_change_gcode": [
|
|
";AFTER_LAYER_CHANGE\n;[layer_z]\n{if ! spiral_mode}M74 W[extruded_weight_total]{endif}\n"
|
|
],
|
|
"machine_end_gcode": [
|
|
"{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X241 Y170 F3600 ; park\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+23, max_print_height)} F300 ; Move print head up{endif}\nG4 ; wait\nM572 S0 ; reset PA\nM593 X T2 F0 ; disable IS\nM593 Y T2 F0 ; disable IS\nM84 X Y E ; disable motors\n; max_layer_z = [max_layer_z]"
|
|
],
|
|
"machine_max_acceleration_e": [
|
|
"2500",
|
|
"2500"
|
|
],
|
|
"machine_max_acceleration_extruding": [
|
|
"4000",
|
|
"2500"
|
|
],
|
|
"machine_max_acceleration_retracting": [
|
|
"1200",
|
|
"1200"
|
|
],
|
|
"machine_max_acceleration_travel": [
|
|
"4000",
|
|
"2500"
|
|
],
|
|
"machine_max_acceleration_x": [
|
|
"4000",
|
|
"2500"
|
|
],
|
|
"machine_max_acceleration_y": [
|
|
"4000",
|
|
"2500"
|
|
],
|
|
"machine_max_acceleration_z": [
|
|
"200",
|
|
"200"
|
|
],
|
|
"machine_max_jerk_e": [
|
|
"10",
|
|
"10"
|
|
],
|
|
"machine_max_jerk_x": [
|
|
"8",
|
|
"8"
|
|
],
|
|
"machine_max_jerk_y": [
|
|
"8",
|
|
"8"
|
|
],
|
|
"machine_max_jerk_z": [
|
|
"2",
|
|
"2"
|
|
],
|
|
"machine_max_speed_e": [
|
|
"100",
|
|
"100"
|
|
],
|
|
"machine_max_speed_x": [
|
|
"300",
|
|
"160"
|
|
],
|
|
"machine_max_speed_y": [
|
|
"300",
|
|
"160"
|
|
],
|
|
"machine_max_speed_z": [
|
|
"40",
|
|
"40"
|
|
],
|
|
"machine_start_gcode": [
|
|
"M17 ; enable steppers\nM862.1 P[nozzle_diameter] ; nozzle check\nM862.3 P \"MK4S\" ; printer model check\nM862.5 P2 ; g-code level check\nM862.6 P\"Input shaper\" ; FW feature check\nM115 U6.1.3+7898\n\nM555 X{(min(print_bed_max[0], first_layer_print_min[0] + 32) - 32)} Y{(max(0, first_layer_print_min[1]) - 4)} W{((min(print_bed_max[0], max(first_layer_print_min[0] + 32, first_layer_print_max[0])))) - ((min(print_bed_max[0], first_layer_print_min[0] + 32) - 32))} H{((first_layer_print_max[1])) - ((max(0, first_layer_print_min[1]) - 4))}\n\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling\nM109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == \"PC\" or filament_type[0] == \"PA\") ? (first_layer_temperature[0] - 25) : (filament_type[0] == \"FLEX\") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp\n\nM84 E ; turn off E motor\n\nG28 ; home all without mesh bed level\n\nG1 X42 Y-4 Z5 F4800\n\nM302 S160 ; lower cold extrusion limit to 160C\n\n{if filament_type[initial_tool]==\"FLEX\"}\nG1 E-4 F2400 ; retraction\n{else}\nG1 E-2 F2400 ; retraction\n{endif}\n\nM84 E ; turn off E motor\n\nG29 P9 X10 Y-4 W32 H4\n\n{if first_layer_bed_temperature[initial_tool]<=60}M106 S100{endif}\n\nG0 Z40 F10000\n\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\nM107\n\n;\n; MBL\n;\nM84 E ; turn off E motor\nG29 P1 ; invalidate mbl & probe print area\nG29 P1 X0 Y0 W50 H20 C ; probe near purge place\nG29 P3.2 ; interpolate mbl probes\nG29 P3.13 ; extrapolate mbl outside probe area\nG29 A ; activate mbl\n\n; prepare for purge\nM104 S{first_layer_temperature[0]}\nG0 X0 Y-4 Z15 F4800 ; move away and ready for the purge\nM109 S{first_layer_temperature[0]}\n\nG92 E0\nM569 S0 E ; set spreadcycle mode for extruder\n\n;\n; Extrude purge line\n;\nG92 E0 ; reset extruder position\nG1 E{(filament_type[0] == \"FLEX\" ? 4 : 2)} F2400 ; deretraction after the initial one before nozzle cleaning\nG0 E7 X15 Z0.2 F500 ; purge\nG0 X25 E4 F500 ; purge\nG0 X35 E4 F650 ; purge\nG0 X45 E4 F800 ; purge\nG0 X48 Z0.05 F8000 ; wipe, move close to the bed\nG0 X51 Z0.2 F8000 ; wipe, move quickly away from the bed\n\nG92 E0\nM221 S100 ; set flow to 100%"
|
|
],
|
|
"max_layer_height": "0.30",
|
|
"min_layer_height": "0.07",
|
|
"nozzle_diameter": [
|
|
"0.4"
|
|
],
|
|
"printable_area": [
|
|
"0x0",
|
|
"250x0",
|
|
"250x210",
|
|
"0x210"
|
|
],
|
|
"printable_height": "220",
|
|
"printer_model": "Prusa MK4S",
|
|
"printer_notes": [
|
|
"Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_MODEL_MK4S\nPG\nNO_TEMPLATES"
|
|
],
|
|
"retract_before_wipe": "80",
|
|
"retract_length_toolchange": "0",
|
|
"retract_lift_above": "0",
|
|
"retract_lift_below": "219",
|
|
"retract_when_changing_layer": "0",
|
|
"retraction_length": "0.7",
|
|
"retraction_minimum_travel": "1.5",
|
|
"retraction_speed": "35",
|
|
"single_extruder_multi_material": "0",
|
|
"thumbnails": [
|
|
"16x16/QOI",
|
|
"313x173/QOI",
|
|
"440x240/QOI",
|
|
"480x240/QOI",
|
|
"640x480/PNG"
|
|
],
|
|
"travel_slope": "1",
|
|
"use_firmware_retraction": "0",
|
|
"use_relative_e_distances": "1",
|
|
"wipe": "0",
|
|
"z_hop": "0.2",
|
|
"z_hop_types": "Slope Lift"
|
|
}
|