Adding my E3V2 to orca slicer produces wrong end code

44 views
Skip to first unread message

Dan Flemming

unread,
Aug 28, 2025, 7:43:12 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
Aafter I got my new Elegoo Centauri Carbon up and running, I downloaded Orcar Slicer.
Used it a little on the CC and decided I'd add my E3V2.
  Got it configured and printed a configuration cube.
The only problems are the 0,0 origin is front-left and starts the prime line towards the back-left.
  Only primes a 70mm line then gets to where the part starts printing. 
 At the end of the print the z runs upward 150mm.

If my part if 100mm high, I'm afraid the x-axis will crash into the top frame.

Does anyone know how the end code should be modified to lift 25mm instead of 150mm?

I'll add my end gcode when I get back to my laptop, so everyone can read what going on.

Sean

unread,
Aug 28, 2025, 8:18:06 AM (10 days ago) Aug 28
to Dan Flemming, 3D Printing Tips and Tricks
If you're end script from your previous Slicer was working as you liked you can most likely just copy and paste it from one slicer to the other. The only thing you need to look out for is the use of "place holder" elements or "if/then" statements that might be specific to one slicing software that the other won't recognize. 


--
You received this message because you are subscribed to the Google Groups "3D Printing Tips and Tricks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3d-printing-tips--...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/3d-printing-tips--tricks/47649cf5-7d57-4241-a8a3-81664e6f2f32n%40googlegroups.com.

Ed Street

unread,
Aug 28, 2025, 8:18:20 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
I included two screenshots to fix those issues.  It's fairly simple, but you need to know where to go first.  I took the liberty of highlighting the buttons to access the relevant areas.  

At the print end, you can raise Z, look for the 150 line, and change it to 25.  It could also be in the print start section as well

However, you can also make it more intuitive and check for the maximum height so that you won't exceed it.


Screenshot 2025-08-28 080907.png


Setting the print area, you can put a model image of the printer or build plate, the same as a texture.  The origin you can change, and essentially this does a + or - to the direction.


Screenshot 2025-08-28 081108.png

Dan Flemming

unread,
Aug 28, 2025, 8:53:58 AM (10 days ago) Aug 28
to Ed Street, 3D Printing Tips and Tricks
Thanks, I'll take a look at the machine code.


I've read the start & End code can't "copy/paste" because of klipper/marlin compatibility.

Thanks!

--
You received this message because you are subscribed to the Google Groups "3D Printing Tips and Tricks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3d-printing-tips--...@googlegroups.com.

Ed Street

unread,
Aug 28, 2025, 9:20:14 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
For copy/paste under marlin <==> Klipper, then the answer is yes or no.  It is worth a test to see if it gives errors and let you know what is wrong.  Or it could pass NULL values, and things go sideways.  What will be the difference between Slicer A and Slicer B for the start variables?

I have included some slicer differences for Voron's print start.  The differences can be drastic in cases.  Note the areas where I listed hard-coded values, i.e., FILAMENT=ABS means that the slicer does not export a variable for that setting, and it must be hard-coded.  with the [0] entry that is toolhead 0, under a toolchanger setup the complexity and support from the slicer goes down drastically..



PS = prusslicer.
SS = Superslicer.
S3D = Simplify3d

#####################################################################
#   Use PRINT_START for the slicer starting script
#
# for PS
# PRINT_START
#   BED=[first_layer_bed_temperature]
#   HOTEND={first_layer_temperature[initial_extruder]}
#   CHAMBER=65
#   LAYERS={total_layer_count}
#   NOZZLE_SIZE={nozzle_diameter[0]}
#   MESH_MIN={first_layer_print_min[0]},{first_layer_print_min[1]}  
#   MESH_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}
#   FILAMENT=[filament_type]
#
# for SS
# PRINT_START
#    BED=[first_layer_bed_temperature]
#    HOTEND={first_layer_temperature[initial_extruder]+extruder_temperature_offset[initial_extruder]}
#    CHAMBER=[chamber_temperature]  
#    Z_ADJUST=0.0
#    NOZZLE_SIZE={nozzle_diameter[0]}
#    MESH_MIN={first_layer_print_min[0]},{first_layer_print_min[1]}
#    MESH_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}
#    FILAMENT=[filament_type]
#
# for Cura:
# START_PRINT
#     BED_TEMP={material_bed_temperature_layer_0}
#     EXTRUDER_TEMP={material_print_temperature_layer_0}
#     CHAMBER={build_volume_temperature}
#     FILAMENT=ABS
#
# for S3D v4
# PRINT_START
#    HOTEND=[extruder0_temperature]
#    BED=[bed0_temperature]
#    MESH_MIN=[build_min_x],[build_min_y]
#    MESH_MAX=[build_max_x],[build_max_y]  
#    LAYERS=[total_layer_count]
#    CHAMBER=40  
#    NOZZLE_SIZE=0.6
#    FILAMENT=ABS
#
# for S3D v5
# PRINT_START
#    HOTEND=[extruder0_temperature]
#    BED=[bed0_temperature]
#    MESH_MIN=[build_min_x],[build_min_y]
#    MESH_MAX=[build_max_x],[build_max_y]  
#    LAYERS=[total_layer_count]
#    CHAMBER=[chamber0_temperature]  
#    NOZZLE_SIZE="0.6"
#    FILAMENT="ABS"

# Orca Slicer
# PRINT_START
#    BED=[first_layer_bed_temperature]
#    HOTEND=[nozzle_temperature_initial_layer]
#    CHAMBER=[chamber_temperature]
#    Z_ADJUST=0.0
#    NOZZLE_SIZE={nozzle_diameter[0]}
#    MESH_MIN={first_layer_print_min[0]},{first_layer_print_min[1]}
#    MESH_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}
#    FILAMENT=[filament_type]

Dan Flemming

unread,
Aug 28, 2025, 9:34:00 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
I don't see anything near 150mm (that measurement was to the bottom of my nozzle from the bed surface).
Is there a Document of gcodes and there meanings?

Here's the Start & End codes of the E3V2 in Orca:

Start:
G90 ; use absolute coordinates
M83 ; extruder relative mode
M140 S[bed_temperature_initial_layer] ; set final bed temp
M104 S150 ; set temporary nozzle temp to prevent oozing during homing
G4 S10 ; allow partial nozzle warmup
G28 ; home all axis
G1 Z50 F240
G1 X2 Y10 F3000
M104 S[nozzle_temperature_initial_layer] ; set final nozzle temp
M190 S[bed_temperature_initial_layer] ; wait for bed temp to stabilize
M109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize
G1 Z0.28 F240
G92 E0
G1 Y140 E10 F1500 ; prime the nozzle
G1 X2.3 F5000
G92 E0
G1 Y10 E10 F1200 ; prime the nozzle
G92 E0


End:
{if max_layer_z < printable_height}G1 Z{min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}
G1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print
{if max_layer_z < printable_height-10}G1 Z{min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}
{if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}
M140 S0 ; turn off heatbed
M104 S0 ; turn off temperature
M107 ; turn off fan
M84 X Y E ; disable motors

Sean

unread,
Aug 28, 2025, 9:40:29 AM (10 days ago) Aug 28
to Ed Street, 3D Printing Tips and Tricks
"I've read the start & End code can't "copy/paste" because of klipper/marlin compatibility." 

This would be true if you were trying to use one script set from one machine to another with a different firmware variant. If you're defining the same machine, with the same firmware, but just in different slicing software then there shouldn't be a problem. Except as noted about place holders specific to either slicer. Which there may not be any used. Copy and paste your the script from the Slicer that is acting in.the "proper way" to the thread we can give you a definitive yes/no answer as to if there would be any issue just pasting it to Orca.

If you want to dig deeper and learn more about the gabblty-gunk of G-code I suggest looking at the link below it's the reprap wiki for common 3d printing related G and M codes. It's pretty in-depth and has codes unique to many slicer and firmware variants.


Ed Street

unread,
Aug 28, 2025, 9:43:51 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
I am guessing the max print height for that printer is 250.  here is how I came up with that number.

-->>>    {if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}

This is saying compare max print height with the printer max height * 0.6,  if you are getting 150mm max_print_height = 150 / 0.6 or 250mm.

If you want it to be  25mm, you can just change it to Z25 F600, or do a check to see if you have that clearance. If that clearance is not there, then you could do max height.

Sean

unread,
Aug 28, 2025, 9:46:01 AM (10 days ago) Aug 28
to Ed Street, 3D Printing Tips and Tricks
You should be fine... The "if" statements are using the slicer place holder definitions from the printer set up to define the z max and then do. A comparison to the sliced model code to determine how the nozel retract acts at the end of the program. It. Shouldn't exceed the maximum z travel as defined within the machine definition. 

Dan Flemming

unread,
Aug 28, 2025, 9:46:28 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
I'll try that Ed.

Here's my Cura Start/End Machine code.

Start:

; Ender 3 Custom Start G-code

G92 E0 ; Reset Extruder

G28 ; Home all axes

M420 S1 ; Autolevel

G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed

G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position

G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line

G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little

G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line

G92 E0 ; Reset Extruder

G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed

G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish


End:

G91 ;Relative positioning

G1 E-2 F2700 ;Retract a bit

G1 E-2 Z0.2 F2400 ;Retract and raise Z

G1 X5 Y5 F3000 ;Wipe out

G1 Z10 ;Raise Z more

G90 ;Absolute positioning


Dan Flemming

unread,
Aug 28, 2025, 10:44:59 AM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
I changed:

From:
{if max_layer_z < printable_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}

To:
{if max_layer_z < printable_height*0.6}G1 Z25 F600 ; Move print head further up{endif}

This brought the extruder back down.
Now at least I know the x-axis won't crash into the frame (even though I now know the code checks for max z-height before moving).
I'll play around with the gcode to get the prime line to react more to my liking (it's NOT priming enough to get a decent purge, needs to be 150-200mm).

Now I'll start calibrating using Orca.
Thanks guys for the help!

Ed Street

unread,
Aug 28, 2025, 4:55:36 PM (10 days ago) Aug 28
to 3D Printing Tips and Tricks
That is still not entirely correct.

printable_height*0.6 would not be needed, as that is 60% of the max print height, or 150mm.  Since you are not using that value but instead 25mm, you can remove that, or better yet, do a condition to check if the max_print_height - print_height is OVER 25 then set it for 25, if it's UNDER 25 then set it for that value.   This would ensure the hop would never go over capacity.
Reply all
Reply to author
Forward
0 new messages