CNC | C | C++ | Assembly | Python | R | Rust | Arduino | Solidworks | Embedded Systems

Details:
A circular or helical arc is specified using either G02 (clockwise arc) or G03 (counterclockwise arc). The axis of the circle or helix must be parallel to the X-, Y- or Z-axis of the machine coordinate system. The axis (or, equivalently, the plane perpendicular to the axis) is selected with G17 (Z-axis, XY-plane), G18 (Y-axis, XZ-plane) or G19 (X-axis, YZ-plane). If the arc is circular, it lies in a plane parallel to the selected plane.
If a line of code makes an arc and includes rotational axis motion, the rotational axes turn at a constant rate so that the rotational motion starts and finishes when the XYZ motion starts and finishes. Lines of this sort are hardly ever programmed.
If cutter radius compensation is active, the motion will differ from the above; see Cutter Compensation. Two formats are allowed for specifying an arc. We will call these the center format and the radius format. In both formats the G02 or G03 is optional if it is the current motion mode.  Radius Format Arc:
In the radius format, the coordinates of the end point of the arc in the selected plane are specified along with the radius of the arc. Program: G02 X~ Y~ Z~ A~ R~ (or use G03 instead of G02). R is the radius. The axis words are all optional except that at least one of the two words for the axes in the selected plane must be used. The R number is the radius. A positive radius indicates that the arc turns through 180 degrees or less, while a negative radius indicates a turn of 180 degrees to 359.999 degrees. If the arc is helical, the value of the end point of the arc on the coordinate axis parallel to the axis of the helix is also specified.
It is an error if:
• Both of the axis words for the axes of the selected plane are omitted
• No R word is given
• The end point of the arc is the same as the current point.
It is not good practice to program radius format arcs that are nearly full circles or are semicircles (or nearly semicircles) because a small change in the location of the end point will produce a much larger change in the location of the center of the circle (and, hence, the middle of the arc). The magnification effect is large enough that rounding error in a number can produce out-of-tolerance cuts. Nearly full circles are outrageously bad, semicircles (and nearly so) are only very bad. Other size arcs (in the range tiny to 165 degrees or 195 to 345 degrees) are OK. Here is an example of a radius format command to mill an arc:
G17 G02 X 1.0 Y 1.5 R 2.0 Z 0.5
That means to make a clockwise (as viewed from the positive Z-axis) circular or helical arc whose axis is parallel to the Z-axis, ending where X=1.0, Y=1.5 and Z=0.5, with a radius of 2.0. If the starting value of Z is 0.5, this is an arc of a circle parallel to the XY-plane; otherwise it is a helical arc.
Center Format Arc:
In the center format, the coordinates of the end point of the arc in the selected plane are specified along with the offsets of the center of the arc from the current location. In this format, it is OK if the end point of the arc is the same as the current point.
It is an error if when the arc is projected on the selected plane, the distance from the current point to the center differs from the distance from the end point to the center by more than 0.0002 inch (if inches are being used) or 0.002 millimeter (if millimeters are being used).
The center is specified using the I and J words. There are two ways of interpreting them. The usual way is that I and J are the center relative to the current point at the start of the arc. This is sometimes called Incremental IJ mode. The second way is that I and J specify the center as actual coordinates in the current system. This is rather misleadingly called Absolute IJ mode. The IJ mode is set using the button and LED on the Settings screen. The choice of modes is to provide compatibility with commercial controllers. You will probably find Incremental to be best. In Absolute it will, of course usually be necessary to use both I and J words unless by chance the arc's center is at the origin.
When the XY-plane is selected, program: G2 X~ Y~ Z~ A~ I~ J~ (or use G3 instead of G2). The axis words are all optional except that at least one of X and Y must be used. I and J are the offsets from the current location or coordinates – depending on IJ mode (X and Y directions, respectively) of the center of the circle. I and J are optional except that at least one of the two must be used.
It is an error if:
• X and Y are both omitted;
• I and J are both omitted.
When the XZ-plane is selected, program: G02 X~ Y~ Z~ A~ I~ K~ (or use G03 instead of G02). The axis words are all optional except that at least one of X and Z must be used. I and K are the offsets from the current location or coordinates – depending on IJ mode (X and Z directions, respectively) of the center of the circle. I and K are optional except that at least one of the two must be used.
It is an error if:
• X and Z are both omitted;
• I and K are both omitted.
When the YZ-plane is selected, program: G02 X~ Y~ Z~ A~ J~ K~ (or use G03 instead of G02). The axis words are all optional except that at least one of Y and Z must be used. J and K are the offsets from the current location or coordinates – depending on IJ mode (Y and Z directions, respectively) of the center of the circle. J and K are optional except that at least one of the two must be used.
It is an error if:
• Y and Z are both omitted;
• J and K are both omitted.
Here is an example of a center format command to mill an arc in Incremental IJ mode:
G17 G02 X1.0 Y1.6 I0.3 J0.4 Z0.9
That means to make a clockwise (as viewed from the positive Z-axis) circular or helical arc whose axis is parallel to the Z-axis, ending where X=1.0, Y=1.6 and Z=0.9, with its center offset in the X direction by 0.3 units from the current X location and offset in the Y direction by 0.4 units from the current Y location. If the current location has X=0.7, Y=0.7 at the outset, the center will be at X=1.0, Y=1.1. If the starting value of Z is 0.9, this is a circular arc; otherwise it is a helical arc. The radius of this arc would be 0.5.
The above arc in Absolute IJ mode would be:
G17 G02 X1.0 Y1.6 I1.0 J1.1 Z0.9
In the center format, the radius of the arc is not specified, but it may be found easily as the distance from the center of the circle to either the current point or the end point of the arc.
Examples:

# Last Updated Sep 16, 2016 - Download G03 Code Example     `(Sample Program G03EX4.)(Workpiece Size: X4, Y4, Z0.25)(Tool: Tool #2, 1/4" Slot Drill )(Tool Start Position: X0, Y0, Z1)` `N2 G90 G80 G40 G54 G20 G17 G50 G94 G64 (safety block)N5 G90 G20N10 M06 T2 G43 H2N15 M03 S1200N20 G00 X2 Y0.5N25 Z0.125N30 G01 Z-0.125 F5N35 X3 F15N40 G03 X3.5 Y1 R0.5 (G03 arc using R value)N45 G01 Y3N50 G03 X3 Y3.5 I-0.5 J0 (G03 arc using I and J)N55 G01 X2N60 G03 X2 Y1.5 I0 J-1 (180° arc using I and J)N65 G01 Y0.5N70 G00 Z0.1N75 X1.5 Y2.5N80 G01 Z-0.25 F5N85 G03 X1.5 Y2.5 I0.5 J0 (Full circle using I and J)N90 G00 Z1N95 X0 Y0N100 M05N105 M30`  