The previous article in this series covered the measurement of features which meant that features were created directly from touching or scanning the component. While most features in an inspection program will be created this way, sooner or later, you will have to use the measured features as part of constructions. DMIS constructions require that you first decide what sort of feature you are going to construct. The most common types of constructed feature are:

POINTARCCIRCLECYLNDRSPHERECPARLN (slot), LINEPLANE and CONE.

Once you have decided on the type of feature to be constructed you must choose an appropriate construction method. Construction methods vary depending on the type of feature you are going to create, e.g. a point has a lot more options for construction than a cone because a point is a simpler feature. Some examples of feature constructions are shown below:

Cone Best Fit:

CONST/CONE,F(CON1),BF,FA(FTR1),FA(FTR2),FA(FTR3),FA(FTR4),FA(FTR5),FA(FTR6)

The previous example constructs a cone called CON1 by best fitting (BF) or to put it another way creating a cone whose form fits into features FTR1 – FTR6

Line Intersection:

CONST/LINE,F(LINE1),INTOF,FA(PLANE1),FA(PLANE2)

This example constructs a line called LINE1 from the intersection (INTOF) of planes PLANE1 and PLANE2.

Both the type of feature and the construction method will be determined by the source features being used and the type of result you would like to create.

 If you have been reading previous articles in this series you will already know that before you can create a feature you must define it. If the constructed feature is to be reported its nominal values can be taken from the component specifications. If the feature being constructed is going to be used in a further construction and does not appear in the specifications you will have to calculate the nominal values. This will be easier if you are using a commercial inspection system most of which will calculate the new nominal values for you. However, if you expect the inspection system to calculate the new nominal values for you, you must make sure that the definitions you entered for the constructions’ source features are accurate.

An example that constructs two different lines from arcs:

$$
$$ measurement
$$
MODE/PROG,MAN
F(PLN001)=FEAT/PLANE,CART,-65,-65,0,0,0,1
MEAS/PLANE,F(PLN001),3
PTMEAS/CART,-5.395,-5.309,0,0,0,1
PTMEAS/CART,-64.578,-19.106,0,0,0,1
PTMEAS/CART,-19.003,-65.198,0,0,0,1
ENDMES
$$
F(ARC001)=FEAT/ARC,INNER,CART,-8,-65,0,0,0,1,5,90,180
MEAS/ARC,F(ARC001),4
GOTO/-8,-65,10
PTMEAS/CART,-10.9389,-60.9549,-3,0.588,-0.809,0.000
PTMEAS/CART,-12.7553,-63.4549,-3,0.951,-0.309,0.000
PTMEAS/CART,-12.7553,-66.5451,-3,0.951,0.309,0.000
PTMEAS/CART,-10.9389,-69.0451,-3,0.588,0.809,0.000
GOTO/-8,-65,10
ENDMES
$$
F(ARC002)=FEAT/ARC,INNER,CART,-65,-8,-2,0,0,1,5,0,-180
MEAS/ARC,F(ARC002),4
GOTO/-65,-8,10
PTMEAS/CART,-60.9549,-10.9389,-2,-0.809,0.588,0.000
PTMEAS/CART,-63.4549,-12.7553,-2,-0.309,0.951,0.000
PTMEAS/CART,-66.5451,-12.7553,-2,0.309,0.951,0.000
PTMEAS/CART,-69.0451,-10.9389,-2,0.809,0.588,0.000
GOTO/-65,-8,10
ENDMES
$$
$$ construction
$$
F(ARC001P)=FEAT/ARC,INNER,CART,-8,-65,0,0,0,1,5,0,180
CONST/ARC,F(ARC001P),PROJCT,FA(ARC001),FA(PLN001)
$$
F(ARC002P)=FEAT/ARC,INNER,CART,-65,-8,0,0,0,1,5,0,180
CONST/ARC,F(ARC001P),PROJCT,FA(ARC002),FA(PLN001)
$$
F(CIR001)=FEAT/CIRCLE,INNER,CART,-8,-65,0,0,0,1,10
CONST/CIRCLE,F(CIR001),TR,F(ARC001P)
$$
F(CIR002)=FEAT/CIRCLE,INNER,CART,-65,-8,0,0,0,1,10
CONST/CIRCLE,F(CIR002),TR,F(ARC002P)
$$
F(TAN_LINE)=FEAT/LINE,UNBND,CART,-40.036,-40.036,0,0.707,-0.707,0,0,0,1
CONST/LINE,F(TAN_LINE),TANTO,FA(CIR002),FA(CIR001)
$$
F(CTR_LINE)=FEAT/LINE,UNBND,CART,-36.5,-36.5,0,0.707,-0.707,0,0,0,1
CONST/LINE,F(CTR_LINE),BF,FA(CIR002),FA(CIR001)
$$




The previous example begins by measuring a plane (PLN001 (the top surface)) and two arcs (ARC001 and ARC002 (the grey curves inside the open ended slots)). Once measurement is complete the program projects (PROJCT) each arc into the upper surface to neutralize any difference in the two arc depths. One possible reason for doing this (other than the fact that I wanted to show you an example of projecting) is that the lines we will create later will lie in the same plane and are better suited to reporting two dimensional angles. The new arcs (ARC001P and ARC002P) are colored light blue. The next two constructions copy arcs ARC001P and ARC002P into circles (CIR001 and CIR002 (shown in orange)) using the TR construction. The reason the arcs have been copied into circles is that some inspection systems do not allow tangent constructions on arcs so a work-around is to copy the arcs into circles. This also gives me a chance to show you the copy (TR) statement. The next two constructions are the reason we did all the previous work. The first constructs a line (TAN_LINE (shown in red)) as a tangent to the two circles using the tangent to (TANTO) construction. The TANTO construction has a number of possibilities which must be narrowed down when creating a program:

Most inspection systems have a mechanism that allows you to choose the correct solution of the four shown during programming. Once the program has been created the nominal values in the constructed line definition will usually guide the system at run time.

The final construction creates a line (CTR_LINE (shown in yellow)) using best fit (BF) which creates a line that passes through centers of the circles (CIR001 and CIR002). Best fit constructions will use the centers of the features passed as parameters of the construction command. If there are more features than the minimum points required for the feature being constructed, the result will be a best fit of the feature and the resultant feature may not pass through any of the construction feature centers.

The examples so far have used measured features to construct new ones but you don’t have to use only measured features (actuals) in constructions. You can use nominal features or a mixture of both. It may have escaped your notice but you don’t have to measure a feature in order to define it. If you define a feature without measuring it, it becomes a nominal or theoretical feature and can be used as a parameter for construction using F() rather than the usual  FA().

The next example creates a gage point on a face using a mixture of an actual plane (PLN002 (shown in blue)) and a defined line (GAGE_LINE (shown in yellow)). The result is an intersection point (GAGE_POINT (shown in red)). The intersection point will be output in the Y direction. The position of the face will move but we only want to record how much it moves along the Y axis. This is why we measure the face as a plane but define the line in space using its end points (it is easier to position a line as bounded (BND) for visual reasons but because a line is endless it could have been defined as unbound (UNBND)and does not need to start on one side of the face and end on the other). In this case, the Y dimension of each point will be positioned either side of the face. The X & Z dimensions will be identical for both ends of the line with the Z dimension matching the gage reference value and the X dimension being adjusted to position the point at the desired position along the face:

$$
 MODE/PROG,MAN
F(PLN002)=FEAT/PLANE,CART,-105.068,-130,-20,0.002,-0.707,0.707
MEAS/PLANE,F(PLN002),4
PTMEAS/CART,-122.151,-124.816,-14.758,0.002,-0.707,0.707
PTMEAS/CART,-108.127,-124.48,-14.469,0.002,-0.707,0.707
PTMEAS/CART,-108.205,-128.468,-18.457,0.002,-0.707,0.707
PTMEAS/CART,-122.955,-128.931,-18.87,0.002,-0.707,0.707
ENDMES
$$
F(GAGE_LINE)=FEAT/LINE,BND,CART,-115,-135,-15,-115,-125,-15,1,0,0
$$
F(GAGE_POINT)=FEAT/POINT,CART,-115,-125.034,-15,0.002,-0.707,0.707
CONST/POINT,F(GAGE_POINT),INTOF,F(GAGE_LINE),FA(PLN002)
$$

This example is useful because it solves a problem that comes up regularly in inspection when a measurement on a three dimensional surface needs to be reported in a single direction. Although there are measurement functions that will allow the CMM to approach along the desired direction and still get accurate three dimensional probe compensation, this doesn’t take into account positioning inaccuracy of the machine. The only possibility for inaccuracy in the constructed method is if you take the face points to far away from the defined line and the face is not flat.

Although this article only covers a small portion of the available construction methods, I hope it will give you a good start in understanding the general construction mechanism. For further information and examples refer to the our ‘Step by Step DMIS Programming’ book or the DMIS Standard, both available at www.dmisstandard.org

Stephen Horsfall specializes in DMIS programming, training and consulting and is the author of ‘Step by Step DMIS Programming’. He can be at contacted at steve.horsfall@cmmts.com.