A1 style purge line for P1S?

Hello, I recently purchased P1S and I was kind of wondering, if there is possibility of changing initial purge line on P1S and swap it with gcode from A1?

My reasoning behind is that A1’s ‘snot line’ functions much better, is some filament is stuck on the nozzle.

I never done gcode modification, because I am worried I might mess something up, but out of curiosity, I would like to ask this question.

Thank you for any response, have a nice day!

if i were you ill think before doing that cuz it may damage the machine

3 Likes

Well that’s something I am worried about, however I don’t see how this could be damaging, tho.

cuz p1s is cxy but a1 is i3 it does matter

No, it doesn’t.
G-code uses the same coordinate system. The interpretation of gcode for each motion system is all done on the internal controller.

The purge line can be modified but do be aware the front left corner can’t be full used as it will activate the filament cutter.

4 Likes

If you’re interested, there’s a great write-up by Teaching Tech on adaptive purge lines: Adaptive purge for any 3D printer using slicer variables by TeachingTech | Download free STL model | Printables.com

I use a variant of his code on my Orca Slicer profile. Reading (and writing) gcode is pretty easy, and the Bambu code is well commented.

But… there is the real possibility of causing physical damage to the printer.
All it takes is forcing a move outside the “bounds” of the print area and things get torn off quite easily. I trashed a very nice built plate on my Ender3 by a mistake in homing gcode… so you do need to know what you’re doing… but it’s not “difficult” code to write.

1 Like

Don’t be rediculous… changing the purge line cannot possibly damage the printer any more than printing a benchy could.

For the record, here’s how you use the A1 style pressure advance purge line on the P1S

This is from the Steinwipe Mod

;13 SteinSwitch use_true_PA_test_line

;Set to “true” to print a test line that shows PA setting in action
;Set to “false” to use stock procedure

{if true}
;+++++++++++++++++++++++++++++

M1002 gcode_claim_action : 8 ; display “Calibrating extrusion”

;_Use filament pressure advance setting
M104 S{nozzle_temperature_initial_layer[initial_extruder]} ; start heating nozzle

{if enable_pressure_advance[initial_extruder]} ; Orca slicer only

  M900 K[pressure_advance] L1000.0 M10
  ;-----------------------------
  ;Test line with PA turned ON  ============+==========+===========+============
  ;-----------------------------

{endif}

M400
G90

{if curr_bed_type == “Supertack Plate” || curr_bed_type == “Cool Plate”}

  ;____________glacier cool plate test line start position__________
  G0 X15 Y{28-2} Z2 F30000 ; Test line start position glacier plate (top of no-go zone Y28 minus extruder offset 2mm typical) 
  G0 Z0 ; touch nozzle to plate to prevent ooze letting air into nozzle 
  M109 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extruder to first layer temp
  M83
  G0 E[retraction_length[initial_extruder]] F{retraction_speed[initial_extruder] * 60} ; unretract filament 

  ;____________glacier cool plate test line routine__________
  G0 Z0.3 F18000 ; Lift to start position
  M400
  G91
  M83
  G0 Y-20 E10.0000 F{outer_wall_volumetric_speed/(24/20) * 60}
  G0 Z0.2
  G0 X2.4 E{.3742 * 0.48} F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60} ; cut over
  G0 Y5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)   * 60}
  G0 Y5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}
  G0 Y5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)   * 60}
  G0 Y5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}
  G0 Y-2 E-[retraction_length[initial_extruder]] F{retraction_speed[initial_extruder] * 60} ;  ; wipe and retract

{else}

  G0 X90 Y-4 Z2 F30000 ; Test line start position all stock plates
  G0 Z0 ; touch nozzle to plate to prevent ooze letting air into nozzle 
  M109 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extruder to first layer temp
  M83
  G0 E[retraction_length[initial_extruder]] F{retraction_speed[initial_extruder] * 60} ; unretract filament 

  G0 Z0.3 F18000 ; Lift to start position
  M400
  G91
  M83
  G0 X20 E10.0000 F{outer_wall_volumetric_speed/(24/20)  * 60}
  G0 Z-0.1
  G0 X5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}
  G0 X5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)   * 60}
  G0 X5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}
  G0 X5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)   * 60}
  G0 X5 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}
  G0 X-2 E-[retraction_length[initial_extruder]] F{retraction_speed[initial_extruder] * 60} ;  ; wipe and retract

{endif}

G90 ; absolute

{else}

;Stock routine___
M975 S1
G90
M83
T1000
G1 X18.0 Y1.0 Z5 F18000 ; Move to start position
G0 Z0 ; drop to bed
M109 S{nozzle_temperature_initial_layer[initial_extruder]}
G1 Z-0.1
G0 E2 F300
G0 X240 E15 F{outer_wall_volumetric_speed/(0.30.5) * 60}
G0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3
0.5)/ 4 * 60}
G0 X239.5
G0 E0.2
G0 Y1.5 E0.700
G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}
M400

{endif}

I’m curious… Does the line above automatically include the saved nozzle offset, or do you have to activate it in some way?

All that is doing is G0 (move to) z height of zero, if it’s done after the bed levelling and saving of the mesh z0 is whatever the printer now thinks it is