Sending GCode: G0 or G1 on every line

Does any know weather or not you have to issue a G0(max speed) or a G1(use F) at the beginning of every line.

For a feedspeed of 127 for all 5 movements, is it enough to do:

% (example 1) (...) G1X1Y1F127 X20 Y20 X1 Y1 (...) %

The SketchUcam plugin for sketch up generates such code. When I run this through chillipeppr, the first movement is slow, all the rest are fast.

The question is, is this legal? or must one do the following?

% (example 2) (...) G1X1Y1F127 G1X20F127 G1Y20F127 G1X1F127 G1Y1F127 (...) %

Or is it up to the hardware reading the code to interpret this as it sees fit? I guess this could also be answered by the loving people (thanks for the work) who wrote the firmware (uno).

If I modify the code so it looks like example 2, it seems to works as expected.

Any comments from the experts???

Not an expert, but here is what I have observed and seen in the documentation.

Including a feedrate “F” command on each G1 movement command is optional. If a feedrate is not specified the GRBL will keep the feedrate at the last speed it received. Most toolpaths include a “F” command on each block of linear movements,

Vcarve will vary the Feedrate for movement blocks that have a Z movement, slowing if the Z is changing then speeding back up to nominal feedrate when the Z movement completes.

example of Vcarve gcode

G0 Z0.2010
G0 X0.0000 Y0.0000 S12000 M3
G0 X0.4556 Y1.2562 Z0.2000
G1 Z-0.1225 F10.0 – Slow for Z change
G2 X0.4756 Y1.2362 I0.0000 J-0.0200 F70.0 – speed back up for the arc movement
G2 X0.4556 Y1.2162 I-0.0200 J0.0000
G2 X0.4356 Y1.2362 I0.0000 J0.0200
G2 X0.4556 Y1.2562 I0.0200 J0.0000
G0 Z0.2000
G1 Z-0.2450 F10.0 – slow down again to change Z
G2 X0.4756 Y1.2362 I0.0000 J-0.0200 F70.0 – back to 70 ipm
G2 X0.4556 Y1.2162 I-0.0200 J0.0000
G2 X0.4356 Y1.2362 I0.0000 J0.0200
G2 X0.4556 Y1.2562 I0.0200 J0.0000
G0 Z0.2000

G0 is for rapids (a non-cutting toolpath i.e. moving the gantry to the next location.) That ‘F’ value is whatever the max value is in your firmware’ G1 is for straight feed (actual cutting). You don’t have to specify the feedrate between moves unless it’s required i.e. raising Z (G1 Z1.50 F20) moving the gantry to the next locate via a rapid (G0 Y100 X100) the lowering Z (G1 Z-1.75 F10 - The F10 is whatever value you have for plunging) then cutting (G1 Y50 X50 F200).


Eric, the G0 and G1 command is optional. If they are not present on a line then the value used is whichever G0/G1 was last used.

G0 X0 Y0
X5 Y5
etc. all fast moves
G1 X0 Y0
X50 Y100
etc all cutting moves
back to fast moves

The CAM software I use and the post processors all put a move word on every code line. S and F words are generally written to a line where there is a change.


Thanks to all for the comment.

Looking to the code that was generated by The SketchUcam plugin for sketch I see that they put an F code on a line with out a G code (this an actual snipit):

(...) G00 Z3.175 X7.703 Y9.111 G01 Z-6.985 F0 Y70.191 F500 X76.621 (...)

It seems as though the F500 is ignored. If add a G01 to the beginning of the line with Y70.191 F500 it works as expected.

If any one has comments I’ll be happy to read them otherwise I will consider my post closed/answered. Again, thanks to all that posted.