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 |
IAS_Wavelength | Wavelength hget] |
SampleSizes | SampleSize zget, set] |
bool | MultiplyByDiffractionLimit mget, set] |
bool | ScatterRays Rget, set] |
bool | UseDashes aget, set] |
bool | UsePolarization zget, set] |
double | MaximumFrequency eget, 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
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