    

 ## On this page

  

 

 # Namespace ZOSAPI::Editors

 Last update: 13.03.2026 

<a id="namespace_z_o_s_a_p_i_1_1_editors"></a>

![](https://img.shields.io/badge/language-C%23-blue "C#")

**Definition**:

## Child namespaces

- [ZOSAPI::Editors::LDE](namespace_z_o_s_a_p_i_1_1_editors_1_1_l_d_e.md#namespace_z_o_s_a_p_i_1_1_editors_1_1_l_d_e)
- [ZOSAPI::Editors::MCE](namespace_z_o_s_a_p_i_1_1_editors_1_1_m_c_e.md#namespace_z_o_s_a_p_i_1_1_editors_1_1_m_c_e)
- [ZOSAPI::Editors::MFE](namespace_z_o_s_a_p_i_1_1_editors_1_1_m_f_e.md#namespace_z_o_s_a_p_i_1_1_editors_1_1_m_f_e)
- [ZOSAPI::Editors::NCE](namespace_z_o_s_a_p_i_1_1_editors_1_1_n_c_e.md#namespace_z_o_s_a_p_i_1_1_editors_1_1_n_c_e)
- [ZOSAPI::Editors::TDE](namespace_z_o_s_a_p_i_1_1_editors_1_1_t_d_e.md#namespace_z_o_s_a_p_i_1_1_editors_1_1_t_d_e)

## Classes

- [ZOSAPI::Editors::ICoatingParameter](interface_z_o_s_a_p_i_1_1_editors_1_1_i_coating_parameter.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_coating_parameter)
- [ZOSAPI::Editors::IEditor](interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor)
- [ZOSAPI::Editors::IEditorCell](interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor_cell.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor_cell)
- [ZOSAPI::Editors::IEditorRow](interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor_row.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_editor_row)
- [ZOSAPI::Editors::ISolveAplanatic](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_aplanatic.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_aplanatic)
- [ZOSAPI::Editors::ISolveAutomatic](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_automatic.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_automatic)
- [ZOSAPI::Editors::ISolveCenterOfCurvature](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_center_of_curvature.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_center_of_curvature)
- [ZOSAPI::Editors::ISolveChiefRayAngle](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_angle.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_angle)
- [ZOSAPI::Editors::ISolveChiefRayHeight](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_height.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_height)
- [ZOSAPI::Editors::ISolveChiefRayNormal](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_normal.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_chief_ray_normal)
- [ZOSAPI::Editors::ISolveCocentricRadius](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_cocentric_radius.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_cocentric_radius)
- [ZOSAPI::Editors::ISolveCocentricSurface](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_cocentric_surface.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_cocentric_surface)
- [ZOSAPI::Editors::ISolveCompensator](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_compensator.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_compensator)
- [ZOSAPI::Editors::ISolveConfigPickup](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_config_pickup.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_config_pickup)
- [ZOSAPI::Editors::ISolveData](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_data.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_data)
- [ZOSAPI::Editors::ISolveDuplicateSag](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_duplicate_sag.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_duplicate_sag)
- [ZOSAPI::Editors::ISolveEdgeThickness](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_edge_thickness.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_edge_thickness)
- [ZOSAPI::Editors::ISolveElementPower](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_element_power.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_element_power)
- [ZOSAPI::Editors::ISolveFieldPickup](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_field_pickup.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_field_pickup)
- [ZOSAPI::Editors::ISolveFixed](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_fixed.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_fixed)
- [ZOSAPI::Editors::ISolveFNumber](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_f_number.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_f_number)
- [ZOSAPI::Editors::ISolveInvertSag](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_invert_sag.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_invert_sag)
- [ZOSAPI::Editors::ISolveMarginalRayAngle](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_angle.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_angle)
- [ZOSAPI::Editors::ISolveMarginalRayHeight](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_height.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_height)
- [ZOSAPI::Editors::ISolveMarginalRayNormal](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_normal.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_marginal_ray_normal)
- [ZOSAPI::Editors::ISolveMaterialModel](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_model.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_model)
- [ZOSAPI::Editors::ISolveMaterialOffset](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_offset.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_offset)
- [ZOSAPI::Editors::ISolveMaterialSubstitute](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_substitute.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_material_substitute)
- [ZOSAPI::Editors::ISolveMaximum](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_maximum.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_maximum)
- [ZOSAPI::Editors::ISolveNone](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_none.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_none)
- [ZOSAPI::Editors::ISolveObjectPickup](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_object_pickup.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_object_pickup)
- [ZOSAPI::Editors::ISolveOpticalPathDifference](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_optical_path_difference.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_optical_path_difference)
- [ZOSAPI::Editors::ISolvePickupChiefRay](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_pickup_chief_ray.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_pickup_chief_ray)
- [ZOSAPI::Editors::ISolvePosition](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_position.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_position)
- [ZOSAPI::Editors::ISolvePupilPosition](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_pupil_position.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_pupil_position)
- [ZOSAPI::Editors::ISolveSurfacePickup](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_surface_pickup.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_surface_pickup)
- [ZOSAPI::Editors::ISolveThermalPickup](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_thermal_pickup.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_thermal_pickup)
- [ZOSAPI::Editors::ISolveVariable](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_variable.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_variable)
- [ZOSAPI::Editors::ISolveZPLMacro](interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_z_p_l_macro.md#interface_z_o_s_a_p_i_1_1_editors_1_1_i_solve_z_p_l_macro)

## Enumeration types

### Enumeration type CellDataType

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a8fa5d9cef0bd6de958233758f1b103da"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum CellDataType {
  Integer,
  Double,
  String
}

```

#### Enumerator Integer

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a8fa5d9cef0bd6de958233758f1b103daaa0faef0851b4294c06f2b94bb1cb2044"></a>

#### Enumerator Double

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a8fa5d9cef0bd6de958233758f1b103daad909d38d705ce75386dd86e611a82f5b"></a>

#### Enumerator String

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a8fa5d9cef0bd6de958233758f1b103daa27118326006d3829667a400ad23d5d98"></a>

### Enumeration type EditorType

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum EditorType {
  LDE,
  NCE,
  MFE,
  TDE,
  MCE,
  OPT
}

```

#### Enumerator LDE

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971af085860fbf312a818f327832a2c2c5a1"></a>

Lens Data Editor.

#### Enumerator NCE

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971a5a87d2c1c240a04e2d1a0911ac5dee6d"></a>

Non-sequential Component Editor.

#### Enumerator MFE

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971a6bb94c2caec6e7f95f4d4381ed211a19"></a>

Merit Function Editor.

#### Enumerator TDE

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971af43e830395af06783c008d6363ef08c5"></a>

Tolerance Data Editor.

#### Enumerator MCE

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971aff3da9fa37305280824b8a9e11299b56"></a>

Multiple Configuration Editor.

#### Enumerator OPT

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0be773de4268acbae53ad15c130fc971ad64669882d28591f1a0fe0926f80e751"></a>

### Enumeration type ReflectTransmitCode

<a id="namespace_z_o_s_a_p_i_1_1_editors_1aec871af56a487f5105f83cd3ed32e966"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum ReflectTransmitCode {
  Success,
  NoReflectDataInFile,
  NoTransmitDataInFile
}

```

#### Enumerator Success

<a id="namespace_z_o_s_a_p_i_1_1_editors_1aec871af56a487f5105f83cd3ed32e966a505a83f220c02df2f85c3810cd9ceb38"></a>

#### Enumerator NoReflectDataInFile

<a id="namespace_z_o_s_a_p_i_1_1_editors_1aec871af56a487f5105f83cd3ed32e966a27c4f0cddd7c39b359bfb94f84c8237e"></a>

#### Enumerator NoTransmitDataInFile

<a id="namespace_z_o_s_a_p_i_1_1_editors_1aec871af56a487f5105f83cd3ed32e966acc0d5781ee91c3db82186606ad881f13"></a>

### Enumeration type SampleSides

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a34f63589a09fc1658deec2b17be298f7"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum SampleSides {
  Front = 0,
  Back = 1
}

```

#### Enumerator Front

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a34f63589a09fc1658deec2b17be298f7a5835bab1ade0060909e31a06af2e2cde"></a>

#### Enumerator Back

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a34f63589a09fc1658deec2b17be298f7a0557fa923dcee4d0f86b1409f5c2167f"></a>

### Enumeration type Samplings

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a91b7373809da5191d7abfd16735f018c"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum Samplings {
  FiveDegrees,
  TwoDegrees,
  OneDegree
}

```

#### Enumerator FiveDegrees

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a91b7373809da5191d7abfd16735f018ca47d53e6944a0c99c758df8fe179be630"></a>

#### Enumerator TwoDegrees

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a91b7373809da5191d7abfd16735f018ca8197fe01dfe44932decd2c79ea1ce04c"></a>

#### Enumerator OneDegree

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a91b7373809da5191d7abfd16735f018caf68ddb96e49298b242b8cd4a7b8627aa"></a>

### Enumeration type SolveStatus

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum SolveStatus {
  Success,
  InvalidSolveType,
  InvalidRow,
  InvalidColumn,
  PostSurfaceStopOnly,
  InvalidMacro,
  Failed = 10000
}

```

#### Enumerator Success

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7a505a83f220c02df2f85c3810cd9ceb38"></a>

#### Enumerator InvalidSolveType

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7ad2868edeec8a26edccb6adf48f9197c5"></a>

#### Enumerator InvalidRow

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7ad2ab6a4d2ba97d6a4b06f759f05865d0"></a>

#### Enumerator InvalidColumn

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7a23f00613a7343249dde5e353c285bc56"></a>

#### Enumerator PostSurfaceStopOnly

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7a65dc95b8955bc997704b58c2a8b51bed"></a>

#### Enumerator InvalidMacro

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7acd3631c6c911d47cf44d37f503a62847"></a>

#### Enumerator Failed

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a1d1faeb4b46e7b0cc51f47bbb04c55f7ad7c8c85bf79bbe1b7188497c32c3b0ca"></a>

### Enumeration type SolveType

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ec"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum SolveType {
  None = 0,
  Fixed = 1,
  Variable = 2,
  SurfacePickup = 3,
  ZPLMacro = 4,
  MarginalRayAngle = 5,
  MarginalRayHeight = 6,
  ChiefRayAngle = 7,
  MarginalRayNormal = 8,
  ChiefRayNormal = 9,
  Aplanatic = 10,
  ElementPower = 11,
  CocentricSurface = 12,
  CocentricRadius = 13,
  FNumber = 14,
  ChiefRayHeight = 15,
  EdgeThickness = 16,
  OpticalPathDifference = 17,
  Position = 18,
  Compensator = 19,
  CenterOfCurvature = 20,
  PupilPosition = 21,
  MaterialSubstitute = 22,
  MaterialOffset = 23,
  MaterialModel = 24,
  Automatic = 25,
  Maximum = 26,
  PickupChiefRay = 27,
  ObjectPickup = 28,
  ConfigPickup = 29,
  ThermalPickup = 30,
  MarginPercent = 31,
  CA_fill = 32,
  DIA_fill = 33,
  ConcentricSurface = 12,
  ConcentricRadius = 13,
  DuplicateSag = 34,
  InvertSag = 35,
  FieldPickup = 10000
}

```

All solve types available. Note that only a portion of the types are available for any given IEditorCell.

Usage (see [Example 18](../apiexamples/example_18.md) for a full sample)

C#

```csharp
            // An exmple of manually "Make Thermal"
            TheSystem.LoadFile(TheApplication.SamplesDir + "\\Sequential\\Objectives\\Doublet.zos", false);
            // Add 1 configuration (totally 2)
            TheMCE.AddConfiguration(false);
            // Add 12 operand (totally 13)
            for (int i = 0; i < 12; i++)
                TheMCE.AddOperand();

            // Create an operand type array and later we will input the array into MCE by a for loop
            MultiConfigOperandType[] operandtype = new MultiConfigOperandType[13]{
            MultiConfigOperandType.TEMP,
            MultiConfigOperandType.PRES,
            MultiConfigOperandType.CRVT,
            MultiConfigOperandType.THIC,
            MultiConfigOperandType.GLSS,
            MultiConfigOperandType.SDIA,
            MultiConfigOperandType.CRVT,
            MultiConfigOperandType.THIC,
            MultiConfigOperandType.GLSS,
            MultiConfigOperandType.SDIA,
            MultiConfigOperandType.CRVT,
            MultiConfigOperandType.THIC,
            MultiConfigOperandType.SDIA};

            // Set parameter 1 for each config operand
            int[] param1value = new int[11] { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3 };
            for (int i = 0; i < 11; i++)
                TheMCE.GetOperandAt(i + 3).Param1 = param1value[i];

            // Set type for each config operand
            for (int i = 0; i < 13; i++)
                TheMCE.GetOperandAt(i + 1).ChangeType(operandtype[i]);

            // Set Thermal Pickup solves
            ISolveData thermalpickupsolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ThermalPickup);
            thermalpickupsolve._S_ThermalPickup.Configuration = 1;
            int[] thermalpickup_num = new int[9] { 3, 4, 6, 7, 8, 10, 11, 12, 13 };
            foreach (int i in thermalpickup_num)
                TheMCE.GetOperandAt(i).GetOperandCell(2).SetSolveData(thermalpickupsolve);

            // Set Pickup solve
            ISolveData configpickupsolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ConfigPickup);
            configpickupsolve._S_ConfigPickup.Configuration = 1;
            TheMCE.GetOperandAt(5).GetOperandCell(2).SetSolveData(configpickupsolve);
            TheMCE.GetOperandAt(9).GetOperandCell(2).SetSolveData(configpickupsolve);

            // Set temperature of configuration 2 to 100 degrees
            TheMCE.GetOperandAt(1).GetOperandCell(2).DoubleValue = 100;
            ISystemData TheSystemData = TheSystem.SystemData;
            TheSystemData.Environment.AdjustIndexToEnvironment = true;

            // Save the system
            TheSystem.SaveAs(TheApplication.SamplesDir + "\\API\\CS\\e18_Doublet_MakeTermal.zos");

```

C++

```csharp
    // An exmple of manually "Make Thermal"
    TheSystem->LoadFile(TheApplication->SamplesDir + "\\Sequential\\Objectives\\Doublet.zos", false);
    // Add 1 configuration (totally 2)
    TheMCE->AddConfiguration(false);
    // Add 12 operand (totally 13)
    for (int i = 0; i < 12; i++)
        TheMCE->AddOperand();

    // Create an operand type array and later we will input the array into MCE by a for loop
    MultiConfigOperandType *operandtype = new MultiConfigOperandType[13]{
        MultiConfigOperandType_TEMP,
        MultiConfigOperandType_PRES,
        MultiConfigOperandType_CRVT,
        MultiConfigOperandType_THIC,
        MultiConfigOperandType_GLSS,
        MultiConfigOperandType_SDIA,
        MultiConfigOperandType_CRVT,
        MultiConfigOperandType_THIC,
        MultiConfigOperandType_GLSS,
        MultiConfigOperandType_SDIA,
        MultiConfigOperandType_CRVT,
        MultiConfigOperandType_THIC,
        MultiConfigOperandType_SDIA };

    // Set parameter 1 for each config operand
    int *param1value = new int[11]{ 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3 };
    for (int i = 0; i < 11; i++)
        TheMCE->GetOperandAt(i + 3)->Param1 = param1value[i];

    // Set type for each config operand
    for (int i = 0; i < 13; i++)
        TheMCE->GetOperandAt(i + 1)->ChangeType(operandtype[i]);

    // Set Thermal Pickup solves
    ISolveDataPtr thermalpickupsolve = TheMCE->GetOperandAt(1)->GetOperandCell(1)->CreateSolveType(SolveType_ThermalPickup);
    thermalpickupsolve->_S_ThermalPickup->Configuration = 1;
    int *thermalpickup_num = new int[9]{ 3, 4, 6, 7, 8, 10, 11, 12, 13 };
    for (int i = 0; i < 9; i++)
        TheMCE->GetOperandAt(thermalpickup_num[i])->GetOperandCell(2)->SetSolveData(thermalpickupsolve);

    // Set Pickup solve
    ISolveDataPtr configpickupsolve = TheMCE->GetOperandAt(1)->GetOperandCell(1)->CreateSolveType(SolveType_ConfigPickup);
    configpickupsolve->_S_ConfigPickup->Configuration = 1;
    TheMCE->GetOperandAt(5)->GetOperandCell(2)->SetSolveData(configpickupsolve);
    TheMCE->GetOperandAt(9)->GetOperandCell(2)->SetSolveData(configpickupsolve);

    // Set temperature of configuration 2 to 100 degrees
    TheMCE->GetOperandAt(1)->GetOperandCell(2)->DoubleValue = 100;
    ISystemDataPtr TheSystemData = TheSystem->SystemData;
    TheSystemData->Environment->AdjustIndexToEnvironment = true;

    // Save the system
    TheSystem->SaveAs(TheApplication->SamplesDir + "\\API\\CPP\\e18_Doublet_MakeTermal.zos");
#if defined(_DEBUG)
    // keeps console open when in debug mode
    system("pause");
#endif

```

Matlab

```csharp
    % An example of manually "Make Thermal"
    TheSystem.LoadFile(System.String.Concat(TheApplication.SamplesDir, '\Sequential\Objectives\Doublet.zos'), false);
    % Add 1 configuration (totally 2)
    TheMCE.AddConfiguration(false);
    % Add 12 operands (totally 13)
    for i = 0:11
        TheMCE.AddOperand();
    end
        
    % Create an operand type array and later we will input the array into MCE with a for loop
    operandType = NET.createArray('ZOSAPI.Editors.MCE.MultiConfigOperandType', 13);
    operandType(1) = ZOSAPI.Editors.MCE.MultiConfigOperandType.TEMP;
    operandType(2) = ZOSAPI.Editors.MCE.MultiConfigOperandType.PRES;
    operandType(3) = ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT;
    operandType(4) = ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC;
    operandType(5) = ZOSAPI.Editors.MCE.MultiConfigOperandType.GLSS;
    operandType(6) = ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA;
    operandType(7) = ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT;
    operandType(8) = ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC;
    operandType(9) = ZOSAPI.Editors.MCE.MultiConfigOperandType.GLSS;
    operandType(10) = ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA;
    operandType(11) = ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT;
    operandType(12) = ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC;
    operandType(13) = ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA;
    % Set parameter 1 for each config operand
    param1value = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3];
    for i = 1:11
        TheMCE.GetOperandAt(i + 2).Param1 = param1value(i);
    end
    
    % Set type for each config operand
    for i = 1:13
        TheMCE.GetOperandAt(i).ChangeType(operandType(i));
    end
    
    % Set thermal pickup solves
    ThermalPickupSolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ThermalPickup);
    tPickup = ThermalPickupSolve.S_ThermalPickup_;
    tPickup.Configuration = 1;
    ThermalPickup_num = [3, 4, 6, 7, 8, 10, 11, 12, 13];
    for i = 1:numel(ThermalPickup_num)
        TheMCE.GetOperandAt(ThermalPickup_num(i)).GetOperandCell(2).SetSolveData(ThermalPickupSolve);
    end
    
    % Set Pickup Solve
    ConfigPickupSolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ConfigPickup);
    cPickup = ConfigPickupSolve.S_ConfigPickup_;
    cPickup.Configuration = 1;
    GLSSops = [5, 9];  % Operands 5 and 9 are GLSS operands
    for i = 1:numel(GLSSops)
        ConfigPickupSolve.S_ConfigPickup_.Operand = GLSSops(i);  % Set pickup solve's "operand" value to pickup from correct place
        TheMCE.GetOperandAt(GLSSops(i)).GetOperandCell(2).SetSolveData(ConfigPickupSolve);  % apply solve for operands 5 and 9
    end
    
    % Set temperature of configuration 2 to 100 degrees
    TheMCE.GetOperandAt(1).GetOperandCell(2).DoubleValue = 100;
    TheSystemData = TheSystem.SystemData;
    TheSystemData.Environment.AdjustIndexToEnvironment = true;
    
    TheSystem.SaveAs(System.String.Concat(TheApplication.SamplesDir, '\API\Matlab\e18_Doublet_MakeTermal.zos'));

```

Python

```csharp
    # An example of manually "Make Thermal"
    TheSystem.LoadFile(TheApplication.SamplesDir + "\Sequential\Objectives\Doublet.zos", False)
    # Add 1 configuration (totally 2)
    TheMCE.AddConfiguration(False)
    # Add 12 operands (totally 13)
    for i in range(0, 12):
        TheMCE.AddOperand()
    # Create an operand type array and later we will input the array into MCE with a for loop
    operandType = [ZOSAPI.Editors.MCE.MultiConfigOperandType.TEMP, ZOSAPI.Editors.MCE.MultiConfigOperandType.PRES,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT, ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.GLSS, ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT, ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.GLSS, ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.CRVT, ZOSAPI.Editors.MCE.MultiConfigOperandType.THIC,
                   ZOSAPI.Editors.MCE.MultiConfigOperandType.SDIA]
    # Set parameter 1 for each config operand
    param1value = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3]
    for i in range(0, 11):
        TheMCE.GetOperandAt(i+3).Param1 = param1value[i]

    # Set type for each config operand
    for i in range(13):
        TheMCE.GetOperandAt(i+1).ChangeType(operandType[i])

    # Set thermal pickup solves
    ThermalPickupSolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ThermalPickup)
    ThermalPickupSolve._S_ThermalPickup.Configuration = 1
    ThermalPickup_num = [3, 4, 6, 7, 8, 10, 11, 12, 13]
    for i in ThermalPickup_num:
        TheMCE.GetOperandAt(i).GetOperandCell(2).SetSolveData(ThermalPickupSolve)

    # Set Pickup Solve
    ConfigPickupSolve = TheMCE.GetOperandAt(1).GetOperandCell(1).CreateSolveType(ZOSAPI.Editors.SolveType.ConfigPickup)
    ConfigPickupSolve._S_ConfigPickup.Configuration = 1
    GLSSops = [5, 9]  # Operands 5 and 9 are GLSS operands
    for i in GLSSops:
        ConfigPickupSolve._S_ConfigPickup.Operand = i  # Set pickup solve's "operand" value to pickup from correct place
        TheMCE.GetOperandAt(i).GetOperandCell(2).SetSolveData(ConfigPickupSolve)  # apply solve for operands 5 and 9

    # Set temperature of configuration 2 to 100 degrees
    TheMCE.GetOperandAt(1).GetOperandCell(2).DoubleValue = 100
    TheSystemData = TheSystem.SystemData
    TheSystemData.Environment.AdjustIndexToEnvironment = True

    TheSystem.SaveAs(TheApplication.SamplesDir + "\\API\\Python\\e18_Doublet_MakeTermal.zos")

```

#### Enumerator None

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca6adf97f83acf6453d4a6a4b1070f3754"></a>

#### Enumerator Fixed

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca4457d440870ad6d42bab9082d9bf9b61"></a>

#### Enumerator Variable

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca47c14840d8e15331fa420b9b2f757cd9"></a>

#### Enumerator SurfacePickup

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca223e9d571ba94af9ab36e26b84adec23"></a>

Lens Data Editor pickup solve.

#### Enumerator ZPLMacro

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca946533a1927f5b4770d3e31548ebbb59"></a>

#### Enumerator MarginalRayAngle

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecabf615c8ec1b44d2094985d44fc6fd908"></a>

#### Enumerator MarginalRayHeight

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca33c5a51919c0c53f0ee7b5d84019a18a"></a>

#### Enumerator ChiefRayAngle

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca5163185f578f6a28193874690c356ca3"></a>

#### Enumerator MarginalRayNormal

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca1d12b0a4f02d0ba70cffc6ca7a480cc3"></a>

#### Enumerator ChiefRayNormal

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca22b3f5ad1a06178b2ec8b120384c3fd5"></a>

#### Enumerator Aplanatic

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecabdfe6a816773e55da047ab75c84f6ab4"></a>

#### Enumerator ElementPower

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca74ad8713a96840897972cc1a30a07089"></a>

#### Enumerator CocentricSurface

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca278308dd644989323d8b89d9173b7d41"></a>

#### Enumerator CocentricRadius

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca619ce1816ff3e6ef9e24c5d1d680f0a4"></a>

#### Enumerator FNumber

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecac05cc0f1fb76aeff76927347d38775e5"></a>

#### Enumerator ChiefRayHeight

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca2ff410b21fd5533cd14f025a70f66799"></a>

#### Enumerator EdgeThickness

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecae97cb5e874f42be6df5d86a73f39cc9b"></a>

#### Enumerator OpticalPathDifference

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecad065c3c8a99ed728ca926b8252eddc3a"></a>

#### Enumerator Position

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca52f5e0bc3859bc5f5e25130b6c7e8881"></a>

#### Enumerator Compensator

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecaecd6b48ae4f9f156b4468448b3bceb31"></a>

#### Enumerator CenterOfCurvature

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecac01bc81b861a72baeacf58838d0803db"></a>

#### Enumerator PupilPosition

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca8d5adf7f11aab86c042b99a0d43bd7d5"></a>

#### Enumerator MaterialSubstitute

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca1a44256f03e0d9e715543cfcecc22bb7"></a>

#### Enumerator MaterialOffset

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca25487c7d8cfd6ebb7f6fa84f476fb115"></a>

#### Enumerator MaterialModel

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecadd717fc3447aa5c9df02f11cd1ea3e42"></a>

#### Enumerator Automatic

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca086247a9b57fde6eefee2a0c4752242d"></a>

#### Enumerator Maximum

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca8321e79c278ec510f63675c040594892"></a>

#### Enumerator PickupChiefRay

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecacd344b9bfc6c5a1d8060627407919215"></a>

#### Enumerator ObjectPickup

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecabab2b58ae03d02a8b6a2c7f2747f848c"></a>

Non-sequential Component Editor pickup solve.

#### Enumerator ConfigPickup

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca901891bc0f3ddba0e25a90155d2802bd"></a>

Multiple Configuration Editor pickup solve.

#### Enumerator ThermalPickup

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca65be3e0d3bf97645521e055dc08d6acd"></a>

#### Enumerator MarginPercent

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca429437da3850d0d706f117960a79df10"></a>

#### Enumerator CA\_fill

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecab5da6a2abfa1f28d5648df260aac5b73"></a>

#### Enumerator DIA\_fill

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecaa5ba6afee7a3c92f10d5944885b35e36"></a>

#### Enumerator ConcentricSurface

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca735cc197268320d35b566624217f145f"></a>

#### Enumerator ConcentricRadius

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca74c5647401c947a9387c265f5da13d69"></a>

#### Enumerator DuplicateSag

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca072fa037164f7fd4b2809780b8ba79f9"></a>

#### Enumerator InvertSag

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0eca0fd0bc40a55b1fb2afae1f49a8cec32f"></a>

#### Enumerator FieldPickup

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a0e4579c2bd01e606f5ba9e7f7ad1b0ecad47de724b31740270ab67c5922646689"></a>

### Enumeration type DirectionOfRayTravel

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a145cb5b8e225c7494a72a9819ef7fb4c"></a>

![](https://img.shields.io/badge/-public-brightgreen "public")

**Definition**:

```csharp
enum DirectionOfRayTravel {
  inward = 0,
  outward = 1
}

```

#### Enumerator inward

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a145cb5b8e225c7494a72a9819ef7fb4ca38dd0cdb040a8c8bf027f85a6218941f"></a>

#### Enumerator outward

<a id="namespace_z_o_s_a_p_i_1_1_editors_1a145cb5b8e225c7494a72a9819ef7fb4cafa81a44128f0ecd72e34491eeaa5fb17"></a>