Skip to main content

Zemax OpticStudio ZOS-API 2026 R1

Interface ZOSAPI::Analysis::Settings::Fans::IAS_Fan

Last update: 13.03.2026

Definition:

Inherits from:

Members

Properties

Property Field

Definition:

IAS_Field ZOSAPI.Analysis.Settings.Fans.IAS_Fan.Field

Return type: IAS_Field

Property Surface

Definition:

IAS_Surface ZOSAPI.Analysis.Settings.Fans.IAS_Fan.Surface

Return type: IAS_Surface

Property Wavelength

Definition:

IAS_Wavelength ZOSAPI.Analysis.Settings.Fans.IAS_Fan.Wavelength

Return type: IAS_Wavelength

Property NumberOfRays

Definition:

int ZOSAPI.Analysis.Settings.Fans.IAS_Fan.NumberOfRays

Usage (see Example 23 for a full sample)

C#

                    // Read batch raytrace and save results
                    normUnPolData.StartReadingResults();
                    int rayNumber, ErrorCode, vignetteCode;
                    double double_X, double_Y, double_Z, double_L, double_M, double_N, double_L2, double_M2, double_N2, OPD, Intensity;
                    bool success;

                    success = normUnPolData.ReadNextResult(out rayNumber, out ErrorCode, out vignetteCode, out double_X, out double_Y, out double_Z, out double_L, out double_M, out double_N, out double_L2, out double_M2, out double_N2, out OPD, out Intensity);
                    while (success)
                    {
                        if ((ErrorCode == 0) && (vignetteCode == 0))
                        {
                            y_ary[field - 1, wave - 1, rayNumber - 1] = double_Y;
                            sbReport.AppendLine((field).ToString() + "\t" + (wave).ToString() + "\t" + py_ary[rayNumber - 1].ToString() + "\t" + ((double_Y - chief_ary[field - 1]) * 1000).ToString());
                        }
                        success = normUnPolData.ReadNextResult(out rayNumber, out ErrorCode, out vignetteCode, out double_X, out double_Y, out double_Z, out double_L, out double_M, out double_N, out double_L2, out double_M2, out double_N2, out OPD, out Intensity);
                    }
                    sbReport.AppendLine("");

C++

            // Read and display results
            normUnPolData->StartReadingResults();
            long rayNumber, errCode, vigCode;
            double rayX, rayY, rayZ, rayL, rayM, rayN, rayl2, raym2, rayn2, rayopd, rayintensiry;
            textfile << "Field [" << field << "] and Wave# [" << wave << "]\n";
            textfile << "Ray#   Py             REAY\n";
            VARIANT_BOOL success = normUnPolData->ReadNextResult(&rayNumber, &errCode, &vigCode, &rayX, &rayY, &rayZ, &rayL, &rayM, &rayN, &rayl2, &raym2, &rayn2, &rayopd, &rayintensiry);
            while (success) {
                if ((errCode == 0) && (vigCode == 0)) {
                    textfile << setw(7) << rayNumber << setw(15) << left << py_ary[rayNumber - 1] << setw(15) << left << ((rayY - chief_ary[field - 1]) * 1000) << "\n";
                    y_ary[field - 1][wave - 1][rayNumber - 1] = rayY;
                }
                success = normUnPolData->ReadNextResult(&rayNumber, &errCode, &vigCode, &rayX, &rayY, &rayZ, &rayL, &rayM, &rayN, &rayl2, &raym2, &rayn2, &rayopd, &rayintensiry);
            }
            textfile << endl;

Matlab

            % Read and display results
            normUnPolData.StartReadingResults();
            [success, rayNumber, errCode, vigCode, ~, y, ~, ~, ~, ~, ~, ~, ~, ~, ~] = normUnPolData.ReadNextResult();
            while success
                if ((errCode == 0 ) && (vigCode == 0))
                    y_ary(field, wave, rayNumber) = y;
                end
                [success, rayNumber, errCode, vigCode, ~, y, ~, ~, ~, ~, ~, ~, ~, ~, ~] = normUnPolData.ReadNextResult();
            end 
            plot(py_ary(:), squeeze((y_ary(field, wave, :) - chief_ary(field)) * 1000), '-', 'MarkerSize', 4);

Python

            # Read and display results
            normUnPolData.StartReadingResults()
            
            # Python NET requires all arguments to be passed in as reference, so need to have placeholders
            sysInt = Int32(1)
            sysDbl = Double(1.0)
            
            output = normUnPolData.ReadNextResult(sysInt, sysInt, sysInt,
                            sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl);
            
            while output[0]:
                if (output[2] == 0 and output[3] == 0):
                    y_ary[field, wave, output[1] - 1] = output[5]
                
                # Python NET requires all arguments to be passed in as reference, so need to have placeholders
                output = normUnPolData.ReadNextResult(sysInt, sysInt, sysInt,
                            sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl, sysDbl);
            plt.plot(py_ary[:], np.squeeze((y_ary[field, wave,:] - chief_ary[field - 1]) * 1000), '-', ms = 4)

Return type: int

Property PlotScale

Definition:

double ZOSAPI.Analysis.Settings.Fans.IAS_Fan.PlotScale

Return type: double

Property CheckApertures

Definition:

bool ZOSAPI.Analysis.Settings.Fans.IAS_Fan.CheckApertures

Return type: bool

Property VignettedPupil

Definition:

bool ZOSAPI.Analysis.Settings.Fans.IAS_Fan.VignettedPupil

Return type: bool

Property UseDashes

Definition:

bool ZOSAPI.Analysis.Settings.Fans.IAS_Fan.UseDashes

Return type: bool

Property Sagittal

Definition:

SagittalAberrationComponent ZOSAPI.Analysis.Settings.Fans.IAS_Fan.Sagittal

Return type: SagittalAberrationComponent

Property Tangential

Definition:

TangentialAberrationComponent ZOSAPI.Analysis.Settings.Fans.IAS_Fan.Tangential

Return type: TangentialAberrationComponent

Connect with Ansys