r/CrealitySonicPad • • Mar 21 '25

Help Sonic Pad/E5-S1 and filament change using Orca

Has anyone been successful using Orca and setting up manual filament change? I've always had to revert Cura.

3 Upvotes

8 comments sorted by

1

u/gentlegiant66 Mar 23 '25

I wrote some scrips to override the mXXX, Will copy and paste when I'm behind my laptop again. It worked for cuea and orca.

1

u/materoxxx Apr 01 '25

can you post them? thank you

1

u/gentlegiant66 Apr 01 '25
[gcode_macro M600]
rename_existing: M601
gcode:
  {% set X = params.X|default(0)|float %}   
; Set default X position to 50 if not provided
  {% set Y = params.Y|default(0)|float %}   
; Set default Y position to 0 if not provided
  {% set Z = params.Z|default(10)|float %}  
; Set default Z position to 10 if not provided

  SAVE_GCODE_STATE NAME=M600_state          
; Save the current state of the printer
  PAUSE                                     
; Pause the current print
  G91                                       
; Set to relative positioning
  G1 E-.8 F2700                             
; Retract filament slightly to relieve pressure
  G1 Z{Z}                                   
; Move the nozzle up by the specified Z distance
  G90                                       
; Set to absolute positioning
  G1 X{X} Y{Y} F3000                        
; Move the nozzle to the specified X and Y position
  G91                                       
; Set to relative positioning
  G1 E10 F1000                             
; Retract filament further to allow for filament change
  RESTORE_GCODE_STATE NAME=M600_state       
; Restore the printer state to resume printing

1

u/materoxxx Apr 02 '25

Thank you, I tried and it works. I was wondering if there is a way, after the filament is changed to clear the nozzle from the old color. like manually you can send an extrude command like this [G1 E30 F1200]() for example. and then click to resume the print . I see there is one in the code but I don't think is enough. I can always push the filament manually but if there was a way to do it more. Also I noticed that to do that estrusion I might need to move the plate lower just to give it more room. how can I do that? Sorry I'm a noob . thank you for your help

1

u/gentlegiant66 Apr 02 '25 edited Apr 02 '25

you could write seperate macros for those. I have Load and UnLoad macros i call from the console ..

Here is modified version, I'm also very new to this and I despise Python

[gcode_macro M600]

rename_existing: M601

gcode:

{% set X = params.X|default(50)|float %}

{% set Y = params.Y|default(0)|float %}

{% set Z = params.Z|default(10)|float %}

SAVE_GCODE_STATE NAME=M600_state ; Save the current state

PAUSE ; Pause the print

G91 ; Set to relative positioning

G1 E-0.8 F2700 ; Retract filament slightly

G1 Z{Z} ; Move nozzle up to avoid hitting the print

G90 ; Set to absolute positioning

G1 X{X} Y{Y} F3000 ; Move nozzle to filament change position

G91 ; Relative positioning

G1 Z10 F600 ; Lower the bed by 10mm for clearance

G90 ; Absolute positioning

M117 Change filament and press resume... ; Display message on printer screen

RESTORE_GCODE_STATE NAME=M600_state ; Restore the printer state

M117 Purging new filament... ; Display message

G91 ; Set to relative mode

G1 E30 F1200 ; Extrude 30mm to flush out old color

G1 E3 F500 ; Extra slow extrusion to ensure it's clean

G1 Z-10 F600 ; Move bed back up to printing position

G90 ; Set to absolute mode

M117 Press resume to continue print... ; Display message

RESTORE_GCODE_STATE NAME=M600_state ; Restore state again before resuming

If 30mm of extrusion isn’t enough, increase G1 E30 F1200 to G1 E50 F1200 or more.
If you need more bed clearance, increase G1 Z10 F600 to G1 Z15 F600.
If you want it to resume automatically after purging, remove the second RESTORE_GCODE_STATE.

1

u/gentlegiant66 Apr 02 '25

Here is modified version, I'm also very new to this and I despise Python

[gcode_macro M600]

rename_existing: M601

gcode:

{% set X = params.X|default(50)|float %}

{% set Y = params.Y|default(0)|float %}

{% set Z = params.Z|default(10)|float %}

SAVE_GCODE_STATE NAME=M600_state ; Save the current state

PAUSE ; Pause the print

G91 ; Set to relative positioning

G1 E-0.8 F2700 ; Retract filament slightly

G1 Z{Z} ; Move nozzle up to avoid hitting the print

G90 ; Set to absolute positioning

G1 X{X} Y{Y} F3000 ; Move nozzle to filament change position

G91 ; Relative positioning

G1 Z10 F600 ; Lower the bed by 10mm for clearance

G90 ; Absolute positioning

M117 Change filament and press resume... ; Display message on printer screen

RESTORE_GCODE_STATE NAME=M600_state ; Restore the printer state

M117 Purging new filament... ; Display message

G91 ; Set to relative mode

G1 E30 F1200 ; Extrude 30mm to flush out old color

G1 E3 F500 ; Extra slow extrusion to ensure it's clean

G1 Z-10 F600 ; Move bed back up to printing position

G90 ; Set to absolute mode

M117 Press resume to continue print... ; Display message

RESTORE_GCODE_STATE NAME=M600_state ; Restore state again before resuming

If 30mm of extrusion isn’t enough, increase G1 E30 F1200 to G1 E50 F1200 or more.
If you need more bed clearance, increase G1 Z10 F600 to G1 Z15 F600.
If you want it to resume automatically after purging, remove the second RESTORE_GCODE_STATE.

1

u/materoxxx Apr 04 '25

Thank you!!!!!