No matter how powerful a program is, there is occasionally a need to add something for a specific job. That's why Zemax gives you interfaces to add almost anything you require.
The Zemax Programming Language (ZPL) is a built-in, semi-compiled scripting language that lets you; easily and efficiently; add your own analysis features, optimization operands, automated keyboard and mouse activities, and many other useful programming capabilities.
An Extension is an external program (like MATLAB®, Visual Basic®, Waterloo Maple®) or other program that communicates with Zemax and uses Zemax as the ray-tracing engine for its own calculations.
Finally, Zemax also allows you to write your own sequential surfaces, non-sequential objects, gradient index materials, scattering functions, diffraction functions and more, through a powerful DLL interface.