# ZPL Programming

The Zemax Programming Language (ZPL) allows users to write their own programs within OpticStudio.

These programs can:

• Automate repetitive keyboard and mouse actions
• Perform calculations based on OpticStudio data
• Export data in specific formats
• Produce graphs and text listings of data

Creating ZPL macros is easy, this learning path provides all the necessary information to get you up and running with this simple yet powerful programming language.

### Get Started:

##### Introduction to Zemax Programming Language

This is an introduction to the Zemax Programming Language (ZPL) for first time users. It provides an overview of the key ZPL features, as well as examples of variables and description of the most important functions and keywords.

Introduction to Zemax Programming Language
##### How to write a ZPL macro

This lesson will teach you how to use the Zemax Programming Language (ZPL) to create a macro calculating and plotting the zonal transverse chromatic aberration (ZTCA) of a system. After explaining the basic algorithm to be used, the article describes how the macro can be generalized to allow for a more flexible use, including user input and error trapping.

How to write a ZPL macro
##### How to create a user-defined solve

This lesson demonstrates how ZPL can be used to create user-defined solves, and it consists of two examples. The first explains how to create a ZPL solve to ensure the image plane of a sequential file has a Radius equivalent to the system’s Petzval curvature. The second shows instead how to constrain an Object position on the Non-Sequential Component Editor based on other another object’s parameters.

##### ZPLM: optimization using a ZPL Macro

This lesson explains how ZPL macros can be used to define complex optimization targets in the Merit Function Editor through use of ZPLM optimization operand. As an example, the we describe how ZPLM can be used to constrain the center of mass of a system to ensure it is correctly balanced.

ZPLM: optimization using a ZPL Macro