Use Tabulated Data for lens radii

  • 13 March 2024
  • 2 replies


can I include a list of preferred radii in my optimization?

Example, I want to optimize a singlet lens:
The glass and the radii of curvatures of front and back surface and the lens thickness will be adjusted.
Glasses of only certain catalogues and radii of curvature from a list of discrete values should be used to find the lens-design with best merit function in optimization.

Can this be done with build in Zemax functionality or would this require the use of API / ZPL Programming?

Thank you!




Best answer by Andrey.Pravdivtsev 15 March 2024, 08:13

View original

2 replies

Userlevel 7
Badge +2



Regarding the glasses of only certain catalogues, this is an excerpt of the Help File regarding the Glass Substitution Template:

If "Use Glass Substitution Template" is unchecked, any glass defined in the current catalogs may be selected if not explicitly excluded (by having "exclude substitution" checked in the glass catalog) and if the wavelength range is suitable for the current lens

Therefore, if you have the Glass Substitution Template unchecked, glasses will be selected among the catalogues under Setup..System Explorer..Material Catalogs..Catalogs To Use. Here is an example with HOYA and CDGM:

Note that when you setup the Substitute Solve, you can also specify a single catalog to be used for that particular solve:

And note that you can also create your own catalogs. Therefore, you could create a single catalogue file with specific glasses from different vendors, which could be a bit tedious by hand but definitely possible. The catalogs are found in your Documents/Zemax/Glasscat folder as AGF and BGF files. AGF files are human-readable text files whose format in described in the Help File under the section The AGF & BGF File Formats. The BGF files are binary files automatically created by OpticStudio to speed up the reading of the glass data (tl;dr you don’t need to care about them).

Regarding the radii of curvature from a list of discrete values. To the best of my knowledge, this is API territory, and might be complex to implement and slow. Can you comment further on why you want to do that, there might be other ways to achieve your final goal? There is the recently improved Optimize..Stock Lens Matching tool, which tries to replace any optimized lens with one found in a stock lens catalogue, for example.

I hope this helps.

Take care,



Userlevel 3

For the radiuses you can try to use “Test plate fitting” option.