TheSystem.Tools. SetAllRadiiVariable();
TheSystem.Tools. SetAllThicknessesVariable ();
- Set all radii variables
- Set all thicknesses variables
LocalOpt = TheSystem.Tools.OpenLocalOptimization();
LocalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
LocalOpt.Cycles = ZOSAPI.Tools.Optimization.OptimizationCycles.Automatic;
LocalOpt.NumberOfCores = 8;
LocalOpt.RunAndWaitForCompletion();
LocalOpt.Close();
- Run local optimization with DLS
GlobalOptimTimeInSeconds = 15;
GlobalOpt = TheSystem.Tools.OpenGlobalOptimization();
GlobalOpt.Algorithm = ZOSAPI.Tools.Optimization.OptimizationAlgorithm.DampedLeastSquares;
GlobalOpt.NumberToSave = ZOSAPI.Tools.Optimization.OptimizationSaveCount.Save_10;
GlobalOpt.RunAndWaitWithTimeout(GlobalOptimTimeInSeconds);
GlobalOpt.Cancel();
GlobalOpt.WaitForCompletion();
GlobalOpt.Close();
- Run global search and cancel it after 15 seconds
HammerOpt = TheSystem.Tools.OpenHammerOptimization();
HammerOpt.RunAndWaitWithTimeout(10);
HammerOpt.Cancel();
HammerOpt.WaitForCompletion();
HammerOpt.Close();
- Run Hammer for 10 seconds
tol = TheSystem.Tools.OpenTolerancing();
tol.SetupMode = ZOSAPI.Tools.Tolerancing.SetupModes.Sensitivity;
tol.Criterion = ZOSAPI.Tools.Tolerancing.Criterions.RMSSpotRadius;
tol.CriterionSampling = 3;
tol.CriterionComp = ZOSAPI.Tools.Tolerancing.CriterionComps.OptimizeAll_DLS;
tol.CriterionCycle = 2;
tol.CriterionField = ZOSAPI.Tools.Tolerancing.CriterionFields.UserDefined;
tol.NumberOfRuns = 20;
tol.NumberToSave = 20;
tol.OutputFile= 'tol_output.txt';
tol.RunAndWaitForCompletion();
tol.Close();
In the above code:
- Set up mode and criterion for the tolerancing analysis
- Select 20 runs of Monte Carlo analysis and save them to 20 files
- Save the tolerance analysis output window text to file ‘tol_output.txt’
MFcalculator=TheSystem.Tools.OpenMeritFunctionCalculator();
MFcalculator.RunAndWaitForCompletion;
MFvalue=MFcalculator.MeritFunctionCalculation;
MFcalculator.Close();
- Calculate merit function
SpotCalculator= TheSystem.Tools.OpenRMSSpotRadiusCalculator();
SpotCalculator.SetMethodGaussianQuadrature(3, 6, 0);
SpotCalculator.IgnoreLateralColor= false;
SpotCalculator.AssumeAxialSymmetry= true;
SpotCalculator.RunAndWaitForCompletion();
SpotValue= RMS_SR.GetSpotRadius(1, 2);
SpotCalculator.Close();
- Calculate RMS spot radius
DesignLockdown=TheSystem.Tools.OpenDesignLockdown();
DesignLockdown.UsePrecisionRounding= true;
DesignLockdown.DecimalPrecision=2;
DesignLockdown.ExcludePickups= true;
DesignLockdown.RunAndWaitForCompletion;
DesignLockdown.Close();
- Run Design Lockdown
Lenscat=TheSystem.Tools.OpenLensCatalogs();
vendors=Lenscat.GetAllVendors();
Lenscat.SelectedVendor=vendors(1);
Lenscat.UseEFL=true;
Lenscat.MinEFL=5;
Lenscat.MaxEFL=10;
Lenscat.NumberOfElements=1;
Lenscat.RunAndWaitForCompletion();
Lenscat_results=Lenscat.GetResult(1);
Lenscat_results.InsertLensSeq(3,true,true);
Lenscat.Close();
- Insert lens from stock lens catalogs at surface 3