Solved

MODIFTSETTINGS type codes for geometric MTF

  • 17 February 2023
  • 4 replies
  • 110 views

Type codes for modifysettings are listed in the Zemax help files under: The Programming Tab > About the ZPL > KEYWORDS (about the zpl) > MODIFYSETTINGS (keywords) 

However, Geometric MTF is not listed here. My question is: what are the type codes for the geometric MTF analysis window?

In case these do not exist, how would I go about modifying the settings for the geometric MTF analysis window via ZOSAPI?

icon

Best answer by David.Nguyen 17 February 2023, 11:20

View original

4 replies

Userlevel 7
Badge +2

Hi harry,

 

If those codes are not in available in MODIFYSETTINGS, I doubt you’ll be able to do it in ZPL.

The first thing to do to check how the settings of an analysis in the ZOS-API can be modified is to check the HasAnalysisSpecificSettings property. If you run the code below (Python):

# New Geometric MTF Analysis
geo_mtf = TheSystem.Analyses.New_GeometricMtf()

# Check if settings are implemented
if geo_mtf.HasAnalysisSpecificSettings:
print('Geometric MTF has its settings implemented in the ZOS-API')

You should get the following result:

Geometric MTF has its settings implemented in the ZOS-API

What this means is that the settings of Geometric MTF are directly available from the ZOS-API. You can find them in the ZOS-API Syntax Help (ZOSAPI.Analysis.Settings.Mtf.IAS_GeometricMtf Interface Reference):

Properties

IAS_Field  Field [get]
IAS_Wavelength  Wavelength [get]
SampleSizes  SampleSize [get, set]
bool  MultiplyByDiffractionLimit [get, set]
bool  ScatterRays [get, set]
bool  UseDashes [get, set]
bool  UsePolarization [get, set]
double  MaximumFrequency [get, set]

This is a small Python example for you:

# New Geometric MTF Analysis
geo_mtf = TheSystem.Analyses.New_GeometricMtf()

# Get settings of analysis
geo_mtf_set = geo_mtf.GetSettings()

# Modify wield
field = 1
geo_mtf_set.Field.SetFieldNumber(field)

# Modify wavlenegth
wave = 1
geo_mtf_set.Wavelength.SetWavelengthNumber(wave)

# Modify sampling
sampling = ZOSAPI.Analysis.SampleSizes.S_32x32
geo_mtf_set.SampleSize = sampling

# Use polarization
geo_mtf_set.UsePolarization = True

# Apply settings
geo_mtf.ApplyAndWaitForCompletion()

I hope this helps, and take care,

 

David

Hi David,

I tried running your code in the python interactive extension template and I am getting the following error: 

AttributeError: 'IAS_' object has no attribute 'Field'

 

Thanks for your help,

Harry

 

 

Userlevel 7
Badge +2

Hi Harry,

 

Strange, it works for me with Python 3.8.13, Pythonnet 2.5.2, and OpticStudio 23.1.

Can you check your version of Python and Pythonnet?

Take care,

 

David

Hi David,

 

Yes you were right, I was running Python 3.9.2 with Pythonnet 3.0.1

I have now switched to a virtual environment running Python 3.8.10 with Pythonnet 2.5.2 and the code is working perfectly.

 

Thanks for your help,

Harry 

 

Reply