G5 - Bézier cubic spline

1.1.0 motion Cubic B-spline with XYE destination and IJPQ offsets


G5 creates a cubic B-spline in the XY plane with the X and Y axes only. P and Q parameters are required. I and J are required for the first G5 command in a series. For subsequent G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting direction of the cubic will automatically match the ending direction of the previous cubic (as if I and J are the negation of the previous P and Q).

See This interactive demo to understand how Bézier control points work.


It is an error if an axis other than X or Y is specified.

The first control point is the current position of the head. XY is the destination (the last control point of the spline).

The next control-points are the current position plus IJ and the current position plus PQ.

I and J can be omitted, which results in these offsets being zero. This produces a 3-point spline (try the interactive demo). However, P and Q are required (otherwise you just get a linear movement).


G5 [E<pos>] [F<rate>] I<pos> J<pos> P<pos> Q<pos> [S<power>] X<pos> Y<pos>



The length of filament to feed into the extruder between the start and end point


The maximum feedrate of the move between the start and end point (in current units per second). This value applies to all subsequent moves.


Offset from the X start point to first control point


Offset from the Y start point to first control point


Offset from the X end point to second control point


Offset from the Y end point to the second control point

[S<power>] 2.0.8

Set the Laser power for the move. (Requires LASER_MOVE_POWER)


A destination coordinate on the X axis


A destination coordinate on the Y axis

Related Media


For example, to program a curvy “N” shape:

G0 X0 Y0
G5 I0 J3 P0 Q-3 X1 Y1

A second curvy “N” that attaches smoothly to this one can now be made without specifying I and J:

G5 P0 Q-3 X2 Y2