Now that we have a single prism object correctly located on the backing material, we can now add an Array object as object number 3. This object has as its parent object the prism object, and it is positioned exactly co-located with it. As we do not need the parent object for ray-tracing, its 'rays ignore this object' and 'do not draw this object' settings are selected on, so that all ray-tracing is done with the array object.

So at this point, the prism shown below is actually the array object, set to produce a 1 x 1 array of prisms:

A 1x1 'array' of prisms

Note that the array object inherits all its shape, refractive, diffractive, gradient index etc properties from the parent, except 'rays ignore' and 'do not draw'. The array object's own properties allow you to define the number of replications in x, y and z, and the distances between replications in x, y and z. In this case we do not need to form the array in three dimensions, so the delta_z parameter is set to zero.

The delta_x and delta_y are defined by the size of the prism in x and y. Since we define these by the half-heights, we can just pick up these parameters, and multiply by two to define the x and y separations between the prisms. These are direclty linked to the defining parameters by pick-up solves.

Here for example is a 4x3 array of prisms:

4x3 array of prisms on the backing material

Now, since we know the size of the backing material in x and y, and the size of the prisms in x and y, we can compute the number of prisms required to fill the backing material as just 2*(backing half width)/prism half-width. Pick-up solves allow this to be done automatically, giving:

the automatically filled array

The file is saved as BEF_model.ZMX. Its worth playing with at this point to understand how the 3 defining parameters:
  • X-halfwidth of the backing material
  • Y-halfwidth of the backing material
  • X1-halfwidth of the prism

control all aspects of geometry the BEF. This is a very elegant demonstration of the power of ZEMAX's parametric-driven editors. The entire BEF can by dynamically regenerated easily with just these parameters. 

Note that if you increase the size of the BEF to a few mm square, ZEMAX will stop drawing the array and replace it with a bounding box instead. ZEMAX counts the number of triangles needed to draw the array, and if this exceeds the limit set in the 'Draw Limit' parameter, ZEMAX will not draw the array. The array still bends rays of course: its just that the drawing routines will take too long to be useful. The draw limit is easily controlled from the user interface to give the exact level of control required fro any given application.