MATLABを使用したZOS-APIのインターフェイスの理解

この記事は、ZOS-APIの主要なインターフェースの概要です。プログラミング...ZOS-APIヘルプに従い、各インターフェイスについて、関連するヘルプファイル セクションについて説明します。記事では重要な部分を強調し、練習する機会を得ます。この記事は、MATLAB向けに書かれています

著者 Julia Zhang and Yihua Hsiao

Introduction

ZOS-API は、インターフェースの階層として構築されます。これらのインターフェイスから、OpticStudioのさまざまな機能にアクセスできます。主なものは以下の通りです。

IZOSAPI_Application TheApplication

定義

TheApplication は変数であり、IZOSAPI_Application インターフェイスのインスタンスであるオブジェクトです。

ヘルプファイルで定義されているように、TheApplication  (またはこの変数を呼び出すために選択したもの) は、利用可能になっている ZOS (Zemax OpticStudio)  のすべての特性にアクセスできます。

 

どうやって使うのか

MatlabでOpticStudioインタラクティブ拡張機能に接続するには、プログラミング…MATLAB…インタラクティブ拡張機能をクリックしてボイラープレート コードを生成します。このコードでは、app = TheConnection.ConnectAsExtension(instance)を使用して、OpticStudioの既存のインスタンスに接続しています。

MatlabでOpticStudioスタンドアロン アプリケーションに接続するには、プログラミング…MATLAB…スタンドアロンアプリケーションをクリックして 、ボイラープレート コードを生成します。このコードでは、app = TheConnection.CreateNewApplication()を使用して、OpticStudioの新しいインスタンスを「ヘッドレス」モードで起動します。OpticStudioウィンドウは表示されませんが、アクティブなライセンスが必要です。

以下に便利なコマンドをいくつか示します。

  • アプリケーションを閉じます: TheApplication.CloseApplication();
  • ライセンスの「エディション」を確認します: TheApplication.LicenseStatus;
  • ライセンスの「モード」を確認します: TheApplication.Mode;
  • OpticStudioの言語を英語に変更します: TheApplication.Preferences.General.Language=ZOSAPI.Preferences.LanguageType.English;
  • サンプル ファイル フォルダーの完全なパスを取得します: sampleDir = TheApplication.SamplesDir

 

IOpticalSystem PrimarySystem

定義

ヘルプファイルで定義されているように、PrimarySystemプロパティは現在ロードされている.ZMXファイルへのアクセスを提供し、いくつかの操作とデータアクセスを提供します。  
TheSystem = TheApplication.PrimarySystem;

 

どうやって使うのか

TheSystem は、エディタへのアクセスを提供します。  .LDE レンズ データ エディタ、.MCE マルチ コンフィグレーション エディタ、.MFE  評価関数エディタ、.TDE 公差データエディタ、.NCE ノンシーケンシャル エディタへのアクセスを提供します。また、.Analyses を使用した分析および. Tools を使用したツールへのアクセスを提供します。

TheSystem から利用できる便利な操作を次に示します。

  • ノンシーケンシャルモードに切り替えます。 TheSystem.MakeNonSequential();
  • シーケンシャルモードに切り替えます。 TheSystem.MakeSequential();
  • ファイル(.ZMX)をロードします。  testFile = System.String.Concat(sampleDir, '\Sequential\Objectives\Double Gauss 28 degree field.zmx');TheSystem.LoadFile(testFile, false);
  • 既存のシステム(.ZMX)を保存します。 TheSystem.Save();
  • 現在のシステムを新しいファイルに保存します。  TheSystem.SaveAs(copyFile);
  • 新しい(デフォルト)レンズデータファイル(LENS.ZMX)を作成します。  TheSystem.New(false);
  • 現在開いているシステムを保存せずに閉じます。 TheSystem.Close(false);

 

ISystemData SystemData

定義

ヘルプファイルで定義されているように、TheSystemDataはシステムのすべての基本データがあります。System Explorerの設定にアクセスできます。
TheSystemData = TheSystem.SystemData;

 

どうやって使うのか

TheSystemData は、アパチャー、視野、波長、環境、レーエイミング、ノンシーケンシャルデータ、偏光などのプロパティへのアクセスを提供します。

TheSystemData 設定を変更するための便利な操作を次に示します。

  • ドロップダウンメニューの設定を変更します。OpticStudioのドロップダウンメニューの設定は、定義済みの値のリストのみを取得できます。ZOS-APIでは、これらのリストは列挙として公開されます。たとえば、システムのアパチャー タイプを入射瞳径に変更するには、ZemaxApertureTypeのメンバーであるEntrancePupilDiameter列挙型を選択します
    TheSystemData.Aperture.ApertureType=ZOSAPI.SystemData.ZemaxApertureType.EntrancePupilDiameter;
  • 値の設定を変更します。
    TheSystemData.Aperture.ApertureValue=20;
  • 文字列設定を変更します。sysTitleNotes = TheSystem.SystemData.TitleNotes;
  • コーティング ファイルを設定してリロードします。  sysFiles = TheSystem.SystemData.Files; sysFiles.CoatingFile = 'COATING.DAT';TheSystem.SystemData.Files.ReloadFiles();
  • タイトルを追加します。 sysTitleNotes.Title = 'Add here the title';
  • チェックボックスをオンまたはオフにします。True はチェックされたオプションを表し、False はチェックされていないオプションを表します。TheSystemData.Aperture.AFocalImageSpace = true;

 

視野と波長を変更するための便利な操作を次に示します。

  • 視野のアクセス。 sysField = TheSystem.SystemData.Fields;
  • 波長のアクセス。sysWave= TheSystem.SystemData.Wavelengths;
  • 新しい視野X = 0、Y = 5.0、および視野の重み= 1を追加します。 NewField_2 = sysField.AddField(0,5.0,1.0);
  • 1.0に等しい重みを持つ新しい波長0.6328ミクロンを追加します。 NewWave_2 = sysWave.AddWavelength(0.6328,1.0);
  • 視野1の値をX = 1.0およびY = 2.0および視野の重み= 0.5に変更します。 field1 = sysField.GetField(1); field1.X = 1.0; field1.Y = 2.0; field1.Weight = 0.5;
  • 波長1を0.55ミクロンに変更します。 TheSystemData.Wavelengths.GetWavelength(1).Wavelength = 0.55;
  • 波長1を主波長として設定し、書き込みます。 TheSystemData.Wavelengths.GetWavelength(1).MakePrimary();
  • 視野タイプを物体高に変更します。  sysField.SetFieldType(ZOSAPI.SystemData.FieldType.ObjectHeight);
  • 視野の正規化を半径に変更。sysField.Normalization= ZOSAPI.SystemData.FieldNormalizationType.Radial;
  • 視野ウィザードを使用して、0〜10の3つの等しいエリアY視野を追加します。 sysField.ApplyFieldWizard(ZOSAPI.SystemData.FieldPattern.EqualAreaY,3,10,0,0,1,true,false);
  • 最後の3つの引数(1、true、false)は、次のことを表しています。1行目から[上書き]オプションをオンにし、[ピックアップを使用]をオフにします。
  • 直交アルゴリズムを使用して、0.486ミクロンから0.656ミクロンまでの6つの波長を定義します。 TheSystemData.Wavelengths.GaussianQuadrature(0.486,0.656,ZOSAPI.SystemData.QuadratureSteps.S6);
  • プリセットオプションを使用して、波長を定義します。 TheSystemData.Wavelengths.SelectWavelengthPreset(ZOSAPI.SystemData.WavelengthPreset.FdC_Visible);
  • 視野の数を読み取ります。 num_fields=TheSystem.SystemData.Fields.NumberOfFields;

 

Analysis (解析)

定義

ヘルプファイルで定義されているように、Analyzesプロパティを使用すると、OpticStudio内の解析機能にアクセスできます。
TheAnalyses = ThePrimarySystem.Analyses;

 

どうやって使うのか

TheAnalysesはすべての解析へのアクセスを提供します。

解析を実行するための便利なコマンドを次に示します。

  • 新しい解析の実行。 TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM AnalysisType)
    例えば、横収差図解析を実行するには:
    TheRayFan = TheSystem.Analyses.New_Analysis(ZOSAPI.Analysis.AnalysisIDM.RayFan);
    一部の解析は、独自の機能で開くことができます。
    TheRayFan = TheSystem.Analyses.New_RayFan();
  • 解析に設定が実装されているかどうかを確認します。  TheRayFan.HasAnalysisSpecificSettings;
  • 設定を取得します。 TheRayFan_Settings = TheRayFan.GetSettings();
  • 設定が実装されている場合、設定を変更します。
    たとえば、光線の数を変更するには: TheRayFan_Settings.NumberOfRays = 100;
    波長を変更するには:TheRayFan_Settings.Wavelength.SetWavelengthNumber(0);
  • ModifySettingsプロパティを使用して設定が実装されていない場合、設定を変更します。
    analysisSettings.SaveTo(cfgFile);   
    analysisSettings.ModifySettings(cfgFile, 'SHA_ROTX', '90');   
    analysisSettings.LoadFrom(cfgFile);   
    System.IO.File.Delete(cfgFile);       
  • 設定を適用します。 TheRayFan.ApplyAndWaitForCompletion();
  • 結果を取得します。 TheRayFan_Results = TheRayFan.GetResults();
  • 結果の読み取り:これは実行された分析に依存します。詳細については、記事 "Generating a list of output data types for each analysis in the ZOS-API" を参照してください。
    例えば、サンプルコード23は、DataSeriesを使用して横収差の解析結果を読み取ります。

    for field = 1:max_num_field
         x = ray_results.DataSeries(field * 2 - 1).XData.Data.double;
        
    y = ray_results.DataSeries(field * 2 - 1).YData.Data.double;
    end;

 

Editors (エディタ)

定義

エディターは、レンズデータ、オブジェクトデータ、オペランドデータを入力するためのスプレッドシートのセットです。エディタには、レンズ データ エディタ(LDE)、ノンシーケンシャル コンポーネント エディタ(NCE)、メリットファンクションエディタ(MFE)、マルチ コンフィギュレーション エディタ(MCE)、公差データエディタ(TDE)が含まれます。

TheLDE = TheSystem.LDE;

 

どうやって使うのか

機能はエディタ間で似ています。LDE は Surface で動作し、NCEはオブジェクトで動作し、MFE、MCE、および TDE はオペランドで動作し、MCE はコンフィグで動作します。

TheLDE 最も一般的な関数の一部を次に示します。

  • 新しい面を追加します。 TheLDE.AddSurface();
  • 指定した面番号に新しい面を挿入します。 TheLDE.InsertNewSurfaceAt(1);
  • 指定した面番号から1つまたは特定の数の面を削除します。 TheLDE.RemoveSurfacesAt(1,3);
  • 指定された数の面をある場所から別の場所にコピー ペーストします。 TheLDE.CopySurfaces(1,3,3);
    最初の引数はコピーする最初の面、2番目の引数はコピーする面の数、最後の引数はペーストする面の番号です。
  • 定義された面にアクセスします。 TheLDE.GetSurfaceAt(1);
  • 面タイプを変更します。surf1_type=surf1.GetSurfaceTypeSettings(ZOSAPI.Editors.LDE.SurfaceType.EvenAspheric); surf1.ChangeType(surf1_type);
  • 半径、厚み、半径、チープ ゾーン、コーニック、TCE、コメント、材質、コーティングの値を取得または設定します。 surf1.Comment=  'Add comment here';
  • ソルブを追加します。
    solve_MarginalRayHeight= surf1.ThicknessCell.CreateSolveType(ZOSAPI.Editors.SolveType.MarginalRayHeight);  
    solve_MarginalRayHeight.PupilZone=0.5;
    surf1.ThicknessCell.SetSolveData(solve_MarginalRayHeight);
    surf1.RadiusCell.MakeSolveVariable();
  • パラメーターの値を変更します。 par2= surf1.GetSurfaceCell(ZOSAPI.Editors.LDE.SurfaceColumn.Par2); par2.DoubleValue= 0.0005;
  • 面1のアパチャー プロパティを円形アパチャーに変更します。 
    aperdata=surf1.ApertureData;
    circular_aper=aperdata.CreateApertureTypeSettings(ZOSAPI.Editors.LDE.SurfaceApertureTypes.CircularAperture);
    circular_aper.MaximumRadius=0.5;
    aperdata.ChangeApertureTypeSettings(circular_aper);
  • エディタ ツール バーのツールにアクセスします。   RunTool_ConvertLocalToGlobalCoordinates(int, int, int)

 

IOpticalSystemTools ThePrimarySystem.Tools

定義

ヘルプファイルで定義されているように、各光学システムはシステムツールへのアクセスを提供します。特定の光学システムで一度に実行できるツールは1つだけです。

TheSystem.Tools

 

どうやって使うのか

シンタックスはツール間で似ています。実行するツールを準備するには、まずツールを開き、設定を定義してから実行します。

testFile = System.String.Concat(sampleDir, '\Sequential\Objectives\Cooke 40 degree field.zar');
testFolder = System.String.Concat(sampleDir, '\test\');

loadZAR=TheSystem.Tools.OpenRestoreZAR();
loadZAR.SetFileName(testFile);
loadZAR.SetOutputFolder(testFolder);
loadZAR.SetFilesAllOverwrite();

loadZAR.RunAndWaitForCompletion();
loadZAR.Close();

 

TheSystem.Tools にて使用できる最も一般的なツールの一部を次に示します

  • アーカイブを作成します。createZAR=TheSystem.Tools.OpenCreateZAR();
  • 現在のレンズデータをCADファイルとしてエクスポートします。 ToolExportCAD = TheSystem.Tools.OpenExportCAD();
  • ファイルをノンシーケンシャルに変換します。  convertNSmode = TheSystem.Tools.OpenConvertToNSCGroup();
  • クイック フォーカスを実行します。 quickFocus = TheSystem.Tools.OpenQuickFocus();
  • すべての変数を削除します。 TheSystem.Tools.RemoveAllVariables();
  • 最適化を実行します。 LocalOpt = TheSystem.Tools.OpenLocalOptimization();
  • バッチ光線追跡を実行します。raytrace = TheSystem.Tools.OpenBatchRayTrace(); 詳細については Batch Processing of Ray Trace Data using ZOS-API in MATLAB を参照してください。
  • 公差解析を開きます。tol = TheSystem.Tools.OpenTolerancing();
  • メリットファンクションを計算します。 MFcalculator=TheSystem.Tools.OpenMeritFunctionCalculator();
  • スポット半径を計算します。SpotCalculator= TheSystem.Tools.OpenRMSSpotRadiusCalculator();
  • レンズ カタログからレンズを挿入します。 Lenscat=TheSystem.Tools.OpenLensCatalogs();

 

TheSystem.Tools にて使用可能なノンシーケンシャルの最も一般的なツールの一部を次に示します

 

KA-01836

この記事は役に立ちましたか?
21人中20人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。