Skip to main content

A Python package used to communicate with Zemax OpticStudio through the API

Project description

ZOSPy

About

Wrapper around the Zemax OpticStudio API. Provides a more pythonic and intuitive way to interact with the API through python using a .NET connection. Also takes care of initiating the connection.

When utilizing this package, please reference it using the following DOI:

DOI

Basic usage

Initiating connection

The connection as extension to running software OpticStudio is initiated as:

import zospy as zp
zos = zp.ZOS()
zos.wakeup()
zos.connect_as_extension(0)
oss = zos.get_primary_system()

Make sure that the OpticStudio software is setup to be connected to as extension through the API. Alternatively, a standalone OpticStudio application can be launched by changing the last two lines to:

zos.create_new_application()
oss = zos.get_primary_system()

Constants

After initiating the connection, all api constants are available through zp.constants (e.g. zp.constants.Editors.LDE.SurfaceType). Note that that are only available after `zos.wakeup() is called as defined under Initiating connection.

Performing analyses

Implementat analyses are are available though the OpticStudioSystem() (referred to as oss above). For instance:

oss.fft_through_focus_mtf(sampling='64x64', deltafocus=0.1, oncomplete='Close')

A full description of the available function parameters is provided in each function docstring.

Convenient functions

Some conventiant functions are available through zp.functions, e.g. to change a surface to a standard stuface:

newsurf = oss.LDE.InsertNewSurfaceAt(0)
zp.functions.lde.surface_change_type(newsurf, 'Standard')

Logging

Some basic logging is implemented through the standard python logging module (but still under development). The following implementation examples assume that import logging is executed.

  1. To enable logging output from all ZOSPy and other modules using logging.basicConfig:
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
  2. To enable logging output from all ZOSPy and other modules using a root logger:
    fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    sh = logging.StreamHandler()
    sh.setFormatter(fmt)
    sh.setLevel(logging.DEBUG)
    
    logger = logging.getLogger()
    logger.addHandler(sh)
    
  3. To enable logging output from ONLY ZOSPy
    logging.getLogger('zospy').addHandler(logging.StreamHandler())
    logging.getLogger('zospy').setLevel(logging.INFO)
    

Dependencies

Python packages

Software

Contact

Feel free to contact us for any inquiries:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zospy-0.5.1.tar.gz (30.8 kB view hashes)

Uploaded Source

Built Distribution

zospy-0.5.1-py3-none-any.whl (37.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page