To begin, open the ZEMAX lens file which is attached to the last page of the article:

 File Pointer  FILE:  Double Pass Tolerance Test File.ZMX

As is, this file consists of a singlet stock lens (32981) from Edmund Optics.  The lens is used at finite conjugates, and the “image” plane is placed 50mm from the vertex of the rear surface of the lens. 

Insert a surface before the IMA surface, and change its Glass type to MIRROR. 

Make a second copy of the lens by highlighting surfaces 1 and 2, and pasting them right before the IMA plane.

Pickup the radii and glass for the return path of the lens.  In addition, apply position solves on the thicknesses, so that the return path of the lens overlaps that of the first, and ensuring that the IMA plane is co-located with the OBJ point.

Radii Pickups

 Curvature Solve Dialog  Curvature Solve Dialog

Note that although surface 4 precedes surface 5, it is actually a representation of the back of the lens as we propagate in the return path.  Therefore, the curvature pickup solve on surface 4 should point to surface 2.  Surface 5 represents the front of the lens in the second pass.  Therefore its curvature should be picked up from that of surface 1.  The comment column may be useful to distinguish what each surface represents. 

Thickness Position Solves

The thickness position solvles for surfaces 3, 4, and 5 should be set as follows:

 Thickness Solve Dialog  Thickness Solve Dialog
 Thickness Solve Dialog  

Glass Pickup

The glass type of the lens should remain the same in both passes, thus a pickup on the glass type is required.

Glass Solve Dialog

After the solves have been added, the Lens Data Editor should appear as below:

Lens Data Editor

And, if the system has been setup correctly, the 3D Layout should appear to have only one lens; both lenses should perfectly overlap:

3D Layout