Skip to main content

access the surface Sag using Matlab ZOS-API


Hello,

Im trying to access to the surface sag data from the analysis menu using Matlab ZOS-API.

I was able to generate a new analysis window using 'TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.SurfaceSag)”

However I don’t know how to select a surface and save the surface sag matrix. Could please provide an example on how to do that?

Did this topic help you find an answer to your question?

6 replies

Berta.Bernad
Zemax Staff
Forum|alt.badge.img+2
  • Zemax Staff
  • 112 replies
  • March 2, 2021

Hello Daniel,

Here is a code snippet you could use to to change the surface number (in this case to surface 3) and get the surface sag data:

    Sag = TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.SurfaceSag);
    Sag_Settings = Sag.GetSettings();   
    Sag_Settings.Surface.SetSurfaceNumber(3);
    Sag.ApplyAndWaitForCompletion();
    SagResults = Sag.GetResults();
    SagResults.GetTextFile(System.String.Concat(TheApplication.SamplesDir, '\API\Matlab\Sag example.txt')); 

Note this will save a text file in samples directory, but it can be  changed as needed.

Best,

Berta

 


Hi Berta,thanks or sharing.

Is there a way tp save it as a matrix to my Matlab workspace?


Also, how do I extarct the X,Y grid?. so eventually I would like to save a point cloud [X Y Z] data

 

Thanks


Csilla Timar-Fulep
Zemax Staff
Forum|alt.badge.img+2

Hi Daniel,

Thanks for getting back to us!

You may retrieve the matrix results by using the following line:

matrixData = SagResults.DataGrids(1).Values.double;

In general, analysis window data is split into multiple categories within the IAR_ Interface. A matrix of data (as in case of the Sag analysis) will typically be provided as a DataGrid while a 2 column list of data (such as that given by a Cross Section plot) will be provided by a DataSeries.

You may find more information about pulling the data and plotting it directly in MATLAB in this forum thread:

How do I output the image of an analysis in ZOS-API? · MyZemax

Further details about all the different analysis types and their available output formats are given in this knowledgebase article:

Generating a list of output data types for each analysis in the ZOS-API

I hope this helps, but if you have any further questions, please do not hesitate to ask!

Best,

Csilla


HI Csilla,

How do I retrieve the the text file info directly to Matlab workspace

an example

Surface Sag Map
Surface 7: S1
Units are Millimeters.
Pupil grid size: 257 by 257
Center point is: 129, 129
Width = 46.97, Decenter x = 0, y = 0 Millimeters.
Point spacing = 0.1834733 Millimeters.


Csilla Timar-Fulep
Zemax Staff
Forum|alt.badge.img+2

Hi Daniel,

These extra information are stored in the MetaData and HeaderData properties. You may read more about how to pull these lines to MATLAB in this forum thread:

How can I pull Peak Irradiance or Total Hits from the Detector Viewer analysis in the API? · MyZemax

 

If you would like to read back the results from the saved text file to MATLAB, then you can use fscan or a similar MATLAB command to pull the data into native variables in MATLAB. You can use the following forum post to get you started:

Extract Data from text File - MATLAB Answers - MATLAB Central (mathworks.com)

 

If your end goal is to use the measured surface sag info to create a new Grid Sag surface, then these knowledgebase articles will show you the steps how to do it:

How to use the Grid Sag surface type · MyZemax

How to write a Grid Sag DAT file programmatically · MyZemax

How to convert any sequential surface to a Grid Sag Surface using the ZOS-API · MyZemax

If you have any further questions, please let us know and we will be happy to help!

Best,

Csilla


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings