設定の変更

IAS_ : 解析設定へのインターフェイス。

ZOSAPI は「インターフェイス」の概念に基づいて構築されています。(インターフェイスへの理解を深めることは、読者の皆さんの訓練に委ねます)。

経験豊富な OpticStudio ユーザーであれば、解析ごとに独自の「設定」グループが存在することを認識しています。ZOSAPI では、各解析の設定をインターフェイスで定義するので、実行内容をコンパイラで認識できるように、使用しているインターフェイスをコンパイラにユーザー側から通知する必要があります。OpticStudio もそれぞれの解析を配置しており、それらは通常独自の「ネームスペース」にまとめて「グループ化」されています。たとえば、FftMtf 解析の場合、別の using ステートメントをファイルの先頭に追加する必要があります。

using ZOSAPI.Analysis

FftMtf 解析の設定にアクセスできるようにするコード行は次のとおりです。

IAS_FftMtf FftMtf_Settings = FftMtf.GetSettings() as IAS_FftMtf;

このコードは次のように読み解けます。

解析 (変数 FftMtf) を使用して、変数 FftMtf_Settings に設定を割り当て、「FftMtf 解析の解析設定へのインターフェイス」を使用して、そこにあるデータにアクセスします。

注 : C# 言語の 'type' 'var' を使用することは可能ですが、コンパイル時に実際のタイプ名を使用して自分のタイプミスを見つけるのは賢明ではありません。

「組み込み」のタイプによる設定

組み込みのタイプ (bool、int、double など) による設定の値は、次のようにできる限り単純に使用します。

FftMtf_Settings.ShowDiffractionLimit = true;

FftMtf_Settings.UsePolarization = false;

FftMtf_Settings.MaximumFrequency = 42.0;

bool fftIsUsingDashes = FftMtf_Settings.UseDashes;

離散値のある設定

Zemax OpticStudio の UI では、これはリストから値を選択して指定する設定です (Zemax OpticStudio の UI ではドロップダウン ボックスに表示されます)。「選択リスト」は enum のメンバーとして定義し、設定はその enum をタイプとして使用して定義します。つまり、以下のようになります。

MtfTypes currentType = FftMtf_Settings.Type;

FftMtf_Settings.Type = MtfTypes.SquareWave;

FftMtf_Settings.SampleSize = SampleSizes._128x128;

「選択リスト」の例は次のとおりです。



視野

視野は関数を使用して値を取得および設定します。視野にはその他の使用可能な機能もあります。set 関数は、視野に無効な値を設定しようとしたときに発生するエラーを格納した IMessage を返します。

int nF_FftMtf = FftMtf_Settings.Field.GetFieldNumber();
IMessage iM_SetFieldN = FftMtf_Settings.Field.SetFieldNumber(nF + 11);
IMessage iM_UseAllFields = FftMtf_Settings.Field.UseAllFields();

波長

波長は関数を使用して値を取得および設定します。波長にはその他の使用可能な機能もあります。set 関数は、波長に無効な値を設定しようとしたときに発生するエラーを格納した IMessage を返します。

int numW = FftMtf_Settings.Wavelength.GetWavelengthNumber();
IMessage iM_WaveN = FftMtf_Settings.Wavelength.SetWavelengthNumber(11);
IMessage iM_UseAllWaves = FftMtf_Settings.Wavelength.UseAllWavelengths();

は関数を使用して値を取得および設定します。にはその他の使用可能な機能もあります。set 関数は、に無効な値を設定しようとしたときに発生するエラーを格納した IMessage を返します。

int nS = FftMtf_Settings.Surface.GetSurfaceNumber();
IMessage iM_SetSurfN = FftMtf_Settings.Surface.SetSurfaceNumber(22);
IMessage iM_UseImageSurf = FftMtf_Settings.Surface.UseImageSurface();
IMessage iM_UseObjSurf = FftMtf_Settings.Surface.UseObjectiveSurface();

次へ :