この記事は、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
にて使用可能なノンシーケンシャルの最も一般的なツールの一部を次に示します
- 光線追跡を実行します。
NSCRayTrace = TheSystem.Tools.OpenNSCRayTrace();
- 公差データベースからデータを読み取ります。
OpenRayDatabaseReader().
詳細については Batch Processing of Ray Trace Data using ZOS-API in MATLAB を参照してください。
KA-01836
コメント
記事コメントは受け付けていません。