Skip to main content

Zemax OpticStudio ZOS-API 2026 R1

Interface ZOSAPI::Editors::IEditorCell

Last update: 13.03.2026

Definition:

Interface used to get and set data for a specific cell in an editor. This interface can be accessed via:

IEditorRow

ILDERow

INCERow

ZOSAPI.Editors.MCE.IMCERow

ZOSAPI.Editors.MFE.IMFERow

ZOSAPI.Editors.TDE.ITDERow

Members

Properties

Property Row

Definition:

IEditorRow ZOSAPI.Editors.IEditorCell.Row

Gets the parent row for this cell.

The row.

Return type: IEditorRow

Property Col

Definition:

int ZOSAPI.Editors.IEditorCell.Col

Gets the column index for this cell.

The cell column index.

Return type: int

Property IsActive

Definition:

bool ZOSAPI.Editors.IEditorCell.IsActive

Gets a value indicating whether this cell is currently active (i.e. in use by the current system).

true if this instance is active; otherwise, false.

Return type: bool

Property IsReadOnly

Definition:

bool ZOSAPI.Editors.IEditorCell.IsReadOnly

Gets a value indicating whether this cell can be modified.

true if this instance is read only; otherwise, false.

Return type: bool

Property Header

Definition:

string ZOSAPI.Editors.IEditorCell.Header

Gets the column header for this cell.

The cell header.

Return type: string

Property DataType

Definition:

CellDataType ZOSAPI.Editors.IEditorCell.DataType

Gets the data type of this cell.

The type of this cell.

Return type: CellDataType

Property IntegerValue

Definition:

int ZOSAPI.Editors.IEditorCell.IntegerValue

Gets or sets the integer value of this cell. Note that if DataType is not CellDataType.Integer, attempting to get or set a value in this way will result in an exception.

Usage (see Example 21 for a full sample)

C#

            // Set 1st object as a Source File
            INCERow Object_1 = TheNCE.GetObjectAt(1);
            IObjectTypeSettings Typeset_SourceFile = Object_1.GetObjectTypeSettings(ObjectType.SourceFile);
            Typeset_SourceFile.FileName1 = "RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT";
            Object_1.ChangeType(Typeset_SourceFile);
            Object_1.GetObjectCell(ObjectColumn.Par1).IntegerValue = 5;
            Object_1.GetObjectCell(ObjectColumn.Par2).IntegerValue = 1000;
            Object_1.GetObjectCell(ObjectColumn.Par3).DoubleValue = 2.485572;
            Object_1.GetObjectCell(ObjectColumn.Par8).DoubleValue = 0.47;
            Object_1.GetObjectCell(ObjectColumn.Par9).DoubleValue = 0.47;

C++

    // Set 1st object as a Source File
    INCERowPtr Object_1 = TheNCE->GetObjectAt(1);
    IObjectTypeSettingsPtr Typeset_SourceFile = Object_1->GetObjectTypeSettings(ObjectType_SourceFile);
    Typeset_SourceFile->FileName1 = "RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT";
    Object_1->ChangeType(Typeset_SourceFile);
    Object_1->GetObjectCell(ObjectColumn_Par1)->IntegerValue = 5;
    Object_1->GetObjectCell(ObjectColumn_Par2)->IntegerValue = 1000;
    Object_1->GetObjectCell(ObjectColumn_Par3)->DoubleValue = 2.485572;
    Object_1->GetObjectCell(ObjectColumn_Par8)->DoubleValue = 0.47;
    Object_1->GetObjectCell(ObjectColumn_Par9)->DoubleValue = 0.47;

Matlab

    % Set 1st object as a Source File
    Object_1 = TheNCE.GetObjectAt(1);
    Typeset_SourceFile = Object_1.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.SourceFile);
    Typeset_SourceFile.FileName1 = 'RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT';
    Object_1.ChangeType(Typeset_SourceFile);
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).IntegerValue = 5;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).IntegerValue = 1000;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 2.485572;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par8).DoubleValue = 0.47;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par9).DoubleValue = 0.47;

Python

    # Set 1st object as a Source File
    Object_1 = TheNCE.GetObjectAt(1)
    Typeset_SourceFile = Object_1.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.SourceFile)
    Typeset_SourceFile.FileName1 = 'RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT'
    Object_1.ChangeType(Typeset_SourceFile)
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).IntegerValue = 5
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).IntegerValue = 1000
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 2.485572
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par8).DoubleValue = 0.47
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par9).DoubleValue = 0.47

The integer value.

Exceptions:

  • ArgumentException:

Return type: int

Property DoubleValue

Definition:

double ZOSAPI.Editors.IEditorCell.DoubleValue

Gets or sets the double precision value of this cell. Note that if DataType is not CellDataType.Double, attempting to get or set a value in this way will result in an exception.

Usage (see Example 21 for a full sample)

C#

            // Set 1st object as a Source File
            INCERow Object_1 = TheNCE.GetObjectAt(1);
            IObjectTypeSettings Typeset_SourceFile = Object_1.GetObjectTypeSettings(ObjectType.SourceFile);
            Typeset_SourceFile.FileName1 = "RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT";
            Object_1.ChangeType(Typeset_SourceFile);
            Object_1.GetObjectCell(ObjectColumn.Par1).IntegerValue = 5;
            Object_1.GetObjectCell(ObjectColumn.Par2).IntegerValue = 1000;
            Object_1.GetObjectCell(ObjectColumn.Par3).DoubleValue = 2.485572;
            Object_1.GetObjectCell(ObjectColumn.Par8).DoubleValue = 0.47;
            Object_1.GetObjectCell(ObjectColumn.Par9).DoubleValue = 0.47;

C++

    // Set 1st object as a Source File
    INCERowPtr Object_1 = TheNCE->GetObjectAt(1);
    IObjectTypeSettingsPtr Typeset_SourceFile = Object_1->GetObjectTypeSettings(ObjectType_SourceFile);
    Typeset_SourceFile->FileName1 = "RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT";
    Object_1->ChangeType(Typeset_SourceFile);
    Object_1->GetObjectCell(ObjectColumn_Par1)->IntegerValue = 5;
    Object_1->GetObjectCell(ObjectColumn_Par2)->IntegerValue = 1000;
    Object_1->GetObjectCell(ObjectColumn_Par3)->DoubleValue = 2.485572;
    Object_1->GetObjectCell(ObjectColumn_Par8)->DoubleValue = 0.47;
    Object_1->GetObjectCell(ObjectColumn_Par9)->DoubleValue = 0.47;

Matlab

    % Set 1st object as a Source File
    Object_1 = TheNCE.GetObjectAt(1);
    Typeset_SourceFile = Object_1.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.SourceFile);
    Typeset_SourceFile.FileName1 = 'RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT';
    Object_1.ChangeType(Typeset_SourceFile);
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).IntegerValue = 5;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).IntegerValue = 1000;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 2.485572;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par8).DoubleValue = 0.47;
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par9).DoubleValue = 0.47;

Python

    # Set 1st object as a Source File
    Object_1 = TheNCE.GetObjectAt(1)
    Typeset_SourceFile = Object_1.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.SourceFile)
    Typeset_SourceFile.FileName1 = 'RAYFILE_LB_T67C_100K_190608_ZEMAX.DAT'
    Object_1.ChangeType(Typeset_SourceFile)
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).IntegerValue = 5
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).IntegerValue = 1000
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 2.485572
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par8).DoubleValue = 0.47
    Object_1.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par9).DoubleValue = 0.47

The double precision value.

Exceptions:

  • ArgumentException:

Return type: double

Property Value

Definition:

string ZOSAPI.Editors.IEditorCell.Value

Gets or sets the value of this cell. Note that this method can be used regardless of the DataType.

Usage (see Example 21 for a full sample)

C#

            // Set 3rd object as Cylinder Volume
            INCERow Object_3 = TheNCE.GetObjectAt(3);
            IObjectTypeSettings Typeset_CylinderVolume = Object_3.GetObjectTypeSettings(ObjectType.CylinderVolume);
            Object_3.ChangeType(Typeset_CylinderVolume);
            // Set positions, material and parameters
            Object_3.GetObjectCell(ObjectColumn.ZPosition).DoubleValue = 0.8;
            Object_3.GetObjectCell(ObjectColumn.Material).Value = "PMMA";
            Object_3.GetObjectCell(ObjectColumn.Par1).DoubleValue = 1.2;
            Object_3.GetObjectCell(ObjectColumn.Par2).DoubleValue = 0.1;
            Object_3.GetObjectCell(ObjectColumn.Par3).DoubleValue = 1.2;

C++

    // Set 3rd object as Cylinder Volume
    INCERowPtr Object_3 = TheNCE->GetObjectAt(3);
    IObjectTypeSettingsPtr Typeset_CylinderVolume = Object_3->GetObjectTypeSettings(ObjectType_CylinderVolume);
    Object_3->ChangeType(Typeset_CylinderVolume);
    // Set positions, material and parameters
    Object_3->GetObjectCell(ObjectColumn_ZPosition)->DoubleValue = 0.8;
    Object_3->GetObjectCell(ObjectColumn_Material)->Value = "PMMA";
    Object_3->GetObjectCell(ObjectColumn_Par1)->DoubleValue = 1.2;
    Object_3->GetObjectCell(ObjectColumn_Par2)->DoubleValue = 0.1;
    Object_3->GetObjectCell(ObjectColumn_Par3)->DoubleValue = 1.2;

Matlab

    % Set 3rd object as Cylinder Volume
    Object_3 = TheNCE.GetObjectAt(3);
    Typeset_CylinderVolume = Object_3.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.CylinderVolume);
    Object_3.ChangeType(Typeset_CylinderVolume);
    % Set positions, material and parameters
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.ZPosition).DoubleValue = 0.8;
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Material).Value = 'PMMA';
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).DoubleValue = 1.2;
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).DoubleValue = 0.1;
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 1.2;

Python

    # Set 3rd object as Cylinder Volume
    Object_3 = TheNCE.GetObjectAt(3)
    Typeset_CylinderVolume = Object_3.GetObjectTypeSettings(ZOSAPI.Editors.NCE.ObjectType.CylinderVolume)
    Object_3.ChangeType(Typeset_CylinderVolume)
    # Set positions, material and parameters
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.ZPosition).DoubleValue = 0.8
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Material).Value = 'PMMA'
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).DoubleValue = 1.2
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par2).DoubleValue = 0.1
    Object_3.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par3).DoubleValue = 1.2

The cell value.

Return type: string

Property Solve

Definition:

SolveType ZOSAPI.Editors.IEditorCell.Solve

Gets the type of the current solve.

The solve.

Return type: SolveType

Public functions

Function GetSolveData

ISolveData ZOSAPI.Editors.IEditorCell.GetSolveData()

Gets the current solve data. Use CreateSolveType to retrieve an interface that can be used to change the solve type. Note that the solve will not be updated until SetSolveData is called with the new settings.

Returns:

Return type: ISolveData

Function GetNumberOfSolveTypes

int ZOSAPI.Editors.IEditorCell.GetNumberOfSolveTypes()

Gets the number of solve types allowed for this specific editor cell.

Returns:

Return type: int

Function IsSolveTypeSupported

bool ZOSAPI.Editors.IEditorCell.IsSolveTypeSupported(SolveType st)

Determines whether the specified solve type is supported by this specific cell.

Parameters:

  • st: The solve type.

Returns:

true if the input solve type can be used; otherwise false.

Parameters:

Return type: bool

Function GetAvailableSolveTypes

SolveType[] ZOSAPI.Editors.IEditorCell.GetAvailableSolveTypes()

Gets the available solve types for this cell.

Returns:

Return type: SolveType[]

Function FillAvailableSolveTypes

void ZOSAPI.Editors.IEditorCell.FillAvailableSolveTypes(int Length, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)][In, Out]SolveType[] solves)

Alternate method of retrieving available cell types, accessible via COM.

Parameters:

  • Length: The length of the input array (must be equal to GetNumberOfSolveTypes.
  • solves: The solve type array to fill. Note that this must be allocated before calling this method.

Parameters:

Return type: void

Function CreateSolveType

ISolveData ZOSAPI.Editors.IEditorCell.CreateSolveType(SolveType type)

Creates the solve type settings for the specified solve type. Note that SetSolveData must be used to actually update the system with the solve settings.

Usage (see Example 15 for a full sample)

C#

            // remove all variables and add a F# solve on last surface radius
            ILensDataEditor TheLDE = TheSystem.LDE;
            IOpticalSystemTools tools = TheSystem.Tools;
            tools.RemoveAllVariables();
            ILDERow Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2);
            ISolveData Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber);
            Solver._S_FNumber.FNumber = 3.1415;
            Surface_Last.RadiusCell.SetSolveData(Solver);
            SampleFile = System.IO.Path.Combine(TheApplication.SamplesDir, @"API\CS\e15_Seq_Optimization\OptimizedFile1.zos");
            TheSystem.SaveAs(SampleFile);

C++

    // remove all variables and add a F# solve on last surface radius
    ILensDataEditorPtr TheLDE = TheSystem->LDE;
    //IOpticalSystemTools
    IOpticalSystemToolsPtr tools = TheSystem->Tools;
    tools->RemoveAllVariables();
    ILDERowPtr Surface_Last = TheLDE->GetSurfaceAt(TheLDE->NumberOfSurfaces - 2);
    ISolveDataPtr Solver = Surface_Last->RadiusCell->CreateSolveType(SolveType::SolveType_FNumber);
    Solver->_S_FNumber->FNumber = 3.1415;
    Surface_Last->RadiusCell->SetSolveData(Solver);
    SampleFile = _bstr_t(TheApplication->SamplesDir) + "\\API\\\Seq_Optimization\\\OptimizedFile1.zos";
    TheSystem->SaveAs(SampleFile);

Matlab

    % remove all variables and add a F# solve on last surface radius
    TheLDE = TheSystem.LDE;
    tools = TheSystem.Tools;
    tools.RemoveAllVariables();
    Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2);
    Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber);
    Solver.S_FNumber_.FNumber = 3.1415;
    Surface_Last.RadiusCell.SetSolveData(Solver);
    SampleFile = System.String.Concat(TheApplication.SamplesDir, '\API\Matlab\e15_Seq_Optimization\OptimizedFile1.zos');
    TheSystem.SaveAs(SampleFile);

Python

    # remove all variables and add a F# solve on last surface radius
    TheLDE = TheSystem.LDE
    #IOpticalSystemTools
    tools = TheSystem.Tools
    tools.RemoveAllVariables()
    Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2)
    Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber)
    Solver._S_FNumber.FNumber = 3.1415
    Surface_Last.RadiusCell.SetSolveData(Solver)
    SampleFile = TheApplication.SamplesDir + '\\API\\Python\\e15_Seq_Optimization\\OptimizedFile1.zos'
    TheSystem.SaveAs(SampleFile)

Parameters:

  • type: The solve type.

Returns:

Parameters:

Return type: ISolveData

Function SetSolveData

SolveStatus ZOSAPI.Editors.IEditorCell.SetSolveData(ISolveData Data)

Updates the system with the new solve type settings (see also CreateSolveType and GetSolveData).

Usage (see Example 15 for a full sample)

C#

            // remove all variables and add a F# solve on last surface radius
            ILensDataEditor TheLDE = TheSystem.LDE;
            IOpticalSystemTools tools = TheSystem.Tools;
            tools.RemoveAllVariables();
            ILDERow Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2);
            ISolveData Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber);
            Solver._S_FNumber.FNumber = 3.1415;
            Surface_Last.RadiusCell.SetSolveData(Solver);
            SampleFile = System.IO.Path.Combine(TheApplication.SamplesDir, @"API\CS\e15_Seq_Optimization\OptimizedFile1.zos");
            TheSystem.SaveAs(SampleFile);

C++

    // remove all variables and add a F# solve on last surface radius
    ILensDataEditorPtr TheLDE = TheSystem->LDE;
    //IOpticalSystemTools
    IOpticalSystemToolsPtr tools = TheSystem->Tools;
    tools->RemoveAllVariables();
    ILDERowPtr Surface_Last = TheLDE->GetSurfaceAt(TheLDE->NumberOfSurfaces - 2);
    ISolveDataPtr Solver = Surface_Last->RadiusCell->CreateSolveType(SolveType::SolveType_FNumber);
    Solver->_S_FNumber->FNumber = 3.1415;
    Surface_Last->RadiusCell->SetSolveData(Solver);
    SampleFile = _bstr_t(TheApplication->SamplesDir) + "\\API\\\Seq_Optimization\\\OptimizedFile1.zos";
    TheSystem->SaveAs(SampleFile);

Matlab

    % remove all variables and add a F# solve on last surface radius
    TheLDE = TheSystem.LDE;
    tools = TheSystem.Tools;
    tools.RemoveAllVariables();
    Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2);
    Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber);
    Solver.S_FNumber_.FNumber = 3.1415;
    Surface_Last.RadiusCell.SetSolveData(Solver);
    SampleFile = System.String.Concat(TheApplication.SamplesDir, '\API\Matlab\e15_Seq_Optimization\OptimizedFile1.zos');
    TheSystem.SaveAs(SampleFile);

Python

    # remove all variables and add a F# solve on last surface radius
    TheLDE = TheSystem.LDE
    #IOpticalSystemTools
    tools = TheSystem.Tools
    tools.RemoveAllVariables()
    Surface_Last = TheLDE.GetSurfaceAt(TheLDE.NumberOfSurfaces - 2)
    Solver = Surface_Last.RadiusCell.CreateSolveType(ZOSAPI.Editors.SolveType.FNumber)
    Solver._S_FNumber.FNumber = 3.1415
    Surface_Last.RadiusCell.SetSolveData(Solver)
    SampleFile = TheApplication.SamplesDir + '\\API\\Python\\e15_Seq_Optimization\\OptimizedFile1.zos'
    TheSystem.SaveAs(SampleFile)

Parameters:

  • Data: The new solve settings.

Returns:

A value indicating whether or not changing the solve settings was successful.

Parameters:

Return type: SolveStatus

Function MakeSolveVariable

bool ZOSAPI.Editors.IEditorCell.MakeSolveVariable()

Sets the solve type to SolveType.Variable.

Usage (see Example 15 for a full sample)

C#

            //Thickness 2, 5, 6, 9, and 11 variable
            Surface2.ThicknessCell.MakeSolveVariable();
            Surface5.ThicknessCell.MakeSolveVariable();
            Surface6.ThicknessCell.MakeSolveVariable();
            Surface9.ThicknessCell.MakeSolveVariable();
            Surface11.ThicknessCell.MakeSolveVariable();

C++

    // Thickness 2, 5, 6, 9, and 11 variable
    Surface2->ThicknessCell->MakeSolveVariable();
    Surface5->ThicknessCell->MakeSolveVariable();
    Surface6->ThicknessCell->MakeSolveVariable();
    Surface9->ThicknessCell->MakeSolveVariable();
    Surface11->ThicknessCell->MakeSolveVariable();

Matlab

    %Thickness 2, 5, 6, 9, and 11 variable
    Surface2.ThicknessCell.MakeSolveVariable();
    Surface5.ThicknessCell.MakeSolveVariable();
    Surface6.ThicknessCell.MakeSolveVariable();
    Surface9.ThicknessCell.MakeSolveVariable();
    Surface11.ThicknessCell.MakeSolveVariable();

Python

    # Thickness 2, 5, 6, 9, and 11 variable
    Surface2.ThicknessCell.MakeSolveVariable()
    Surface5.ThicknessCell.MakeSolveVariable()
    Surface6.ThicknessCell.MakeSolveVariable()
    Surface9.ThicknessCell.MakeSolveVariable()
    Surface11.ThicknessCell.MakeSolveVariable()

Returns:

true if the change succeeded; otherwise, false

Return type: bool

Function MakeSolveFixed

bool ZOSAPI.Editors.IEditorCell.MakeSolveFixed()

Sets the solve type to SolveType.Fixed.

Returns:

true if the change succeeded; otherwise, false

Return type: bool

Connect with Ansys