Most CMM measurement occurs in the CMM’s native rectangular coordinate system using X, Y and Z dimensions. This coordinate system is referred to as cartesian coordinates which is why the minor word CART appears in most DMIS commands.

In some cases however, drawing dimensions are of a radial or angular nature which is why the DMIS standard contains polar command options. Unlike cartesian coordinates, polar coordinates are not three dimensional and as such require the user to specify the view in which they are defined. As mentioned in previous articles this is achieved by setting the working plane using the WKPLAN major word. This command has three possible options; XY, YZ or ZX. If you are confused as to which one to apply, look at the drawing view containing the dimensions and ask yourself ‘which datum axis am I looking down’? The letter for the axis you are looking down will be the one that doesn’t appear in the WKPLAN parameter. If no CMM axis passes through the drawing view you will have to manipulate the coordinate system until one does.

An example of setting the working plane along the Z axis (doesn’t matter which direction):

WKPLAN/XY

Once the working plane has been established all measurement and movement can be done in that plane using commands that include the minor word POL as an option. The POL option requires that coordinate data be entered as radius, angle and height instead of X, Y and Z.

A CMM move in polar:

GOTO/POL,35.0,45.0,-10

This move will go directly to the absolute point specified by a 35.0 radius at 45 degrees. If the working plane had been set to WKPLAN/XY the CMM will move in to the radial position in the XY plane while moving along the Z axis to -10.0.

As mentioned in the previous paragraph, these are absolute moves and will be from the current coordinate origin. If you wanted to move to the same position in cartesian coordinates you would enter the following command:

GOTO/CART, 24.7487, 24.7487,-10

The polar version is a lot easier to visualize once you get the idea of a circular measurement system.

In cartesian coordinates you must be aware of whether a given dimension is on the positive or negative side of the coordinate origin. This is also the case with the height parameter in polar measurement. The radius however will always be a positive figure and the angle will be either 0 to 360 or 0 to 180 or 0 to -180. Some systems may except negative radial dimensions but using this method doesn’t really make any sense except under special circumstances. Angle values are oriented using the right hand rule and their position will depend on the view you are looking in:

This illustration shows the polar angle positions in all three working planes. It does not matter what direction the view is facing because the angles are determined by the axis directions.

A typical example of polar measurement would be the inspection of a bolt circle:

In this example we will measure eight equally spaced holes at a common radius in the ZX plane. A typical code fragment would look like this:

\$\$

MODE/AUTO,PROG,MAN

\$\$

\$\$ (this offset is not on the drawing)
\$\$

D(THEO_BOLT_CENTER)=TRANS/XORIG,65,ZORIG,65

\$\$

WKPLAN/ZXPLAN

\$\$

F(C1)=FEAT/CIRCLE,INNER,POL,40.0,0.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C1),4

ENDMES

F(C2)=FEAT/CIRCLE,INNER,POL,40.0,45.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C2),4

ENDMES

F(C3)=FEAT/CIRCLE,INNER,POL,40.0,90.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C3),4

ENDMES

F(C4)=FEAT/CIRCLE,INNER,POL,40.0,135.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C4),4

ENDMES

F(C5)=FEAT/CIRCLE,INNER,POL,40.0,180.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C5),4

ENDMES

F(C6)=FEAT/CIRCLE,INNER,POL,40.0,-135.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C6),4

ENDMES

F(C7)=FEAT/CIRCLE,INNER,POL,40.0,-90.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C7),4

ENDMES

F(C8)=FEAT/CIRCLE,INNER,POL,40.0,-45.0,-2,0.0,1.0,0.0,5.0

MEAS/CIRCLE,F(C8),4

ENDMES

\$\$

The first thing the code does is move the datum to the theoretical center of the bolt circle (not shown in the picture). It then sets the working plane and measures the holes. If you look closely you will see that the only difference between the circle definitions is the angle parameter. This makes it very easy to code a single circle and then cut and paste the hole with minimal changes to subsequent circles. It is also easy to substitute the angle dimension for a variable and use high level programming to increment the angle within a loop but that is a subject for another article.

Once the measurement of the holes has been taken care of it is a simple matter to recall the main datum before constructing the bolt circle from the existing circles. In this example the nominal bolt circle center would be 65.0 in the X and Z dimensions with a diameter of 80.0 (Rx2).

Another example of polar measurement is the use of radius and angle to take points for an incomplete circle:

\$\$

MODE/PROG,MAN

\$\$

D(THEO_BOLT_CENTER)=TRANS/XORIG,65,ZORIG,65

\$\$

WKPLAN/ZXPLAN

\$\$

F(C1)=FEAT/CIRCLE,INNER,POL,40.0,0.0,-2,0.0,1.0,0.0,5.0

D(THEO_C1_CENTER)=TRANS/XORIG,F(C1),ZORIG,F(C1)

MEAS/CIRCLE,F(C1),3

PTMEAS/POL,2.5,45.0,-2,,-0.707,0.000,-0.707

PTMEAS/POL,2.5,90.0,-2,-1.000,0.000,0.000

PTMEAS/POL,2.5,135.0,-2,-0.707,0.000,0.707

ENDMES

\$\$

RECALL/DA(THEO_BOLT_CENTER)

This code offsets the datum to the center of the bolt pattern before defining the position of C1. The difference between this example and the last is that the code then uses the nominal center of circle C1 as the origin in X and Z before using PROG mode to measure three points inside the hole at specific angular positions. The example code then recalls the theoretical center before moving to the next hole. This type of programming can be used very effectively when measuring arcs that have very little area. In these cases you can move the datum to the theoretical center of an arc before using polar points to measure it in multiple positions:

\$\$

MODE/AUTO,PROG,MAN

\$\$

D(THEO_ARC_CENTER)=TRANS/XORIG,115,YORIG,20

\$\$

WKPLAN/XYPLAN

\$\$

F(ARC_PT1)=FEAT/POINT,POL,72.0,45.0,-0.707,-0.707,0.000

MEAS/POINT,F(ARC_PT1),1

ENDMES

\$\$