This may sound obvious, but it is the single biggest cause of interoperability problems.
Open the file bad_lightpipe.stp (from the zip file at the end of the last page of this article) in ZEMAX or your mechanical CAD program. At first glance the object looks fine:

but set the opacity to say 50%, or use a wireframe view, and a problem is apparent:


This file contains internal faces which have no physical meaning. There is no way to manufacture a lightpipe with internal faces like this. The CAD object should represent a 'shrink-wrapped', simply-closed volume without internal faces.
This file really represents how the designer made the object, and not the object itself!
Prior to export, the designer should Boolean the six individual pipes together to form a single volume. Open the file good_lightpipe.stp to see the difference:


This is a valid solid object. Just to make this really clear, the following animated gif shows the badly-formed object and the well-formed object alternately:

A similar problem arises when a
volume object is defined in the CAD program by
multiple surface objects. Imagine a cylinder volume, designed by taking a cylindrical pipe surface, and two circles (one at each end):

Numerical precision means that there can be gaps formed between the cylinder pipe and the circular end face. Prior to export, the surfaces must be 'stitched' together to form a continuous join:

The commands for stitching faces together vary from CAD program to CAD program, of course. However, the exported object must be a
watertight, valid solid object. If rays encounter small gaps between surfaces in the solid, geometry errors will occur.
Use whatever commands your CAD program provides to ensure you export a valid, watertight solid object, with no internal faces.
Note that the export file can contain multiple objects. Each object should be a valid, watertight solid. If two or more objects overlap, they should be Booleaned together to form a single object prior to export. On import to ZEMAX all objects inside a single CAD file will be given the same material properties (although the surface properties, like thin-film coatings and scattering functions, can be different). If you require different objects to be made of different materials, export them as separate files.