数値関数

数値関数は、数値変数代入式の右辺、およびキーワードの引数とする式の中で使用できます。これらの関数は、引数なし、引数 1 つ、または複数引数が必須となる場合があります。すべての関数は 1 つの値を返します。PWAV() (主波長) など特定の関数は、引数によらず、提供する必要のない値を返します。ただし、それでも括弧は必要です。

次の表に、すべての ZPL 関数を示します。構文が FUNC() として指定されている場合、引数は必要ありません。FUNC(x) は 1 つの引数が必要であることを示し、FUNC(x,y) は 2 つの引数が必要であることを示します (以下同様)。

ZPL 関数一覧

関数 引数 戻り値
ABSO(x) 数式 式の絶対値。
ACOS(x) 数式 逆余弦 (ラジアン単位)。この関数を使用すると、定数πを 2*ACOS(0) として定義できます。
APMN(x) 有効な面番号 最小の半径値。スパイダ アパチャーの場合、これはアームの幅です。矩形および楕円形のアパチャーの場合、これはアパチャーの X 幅の半分です。
APMX(x) 有効な面番号 最大の半径値。スパイダ アパチャーの場合、これはアームの数です。矩形および楕円形のアパチャーの場合、これはアパチャーの Y 幅の半分です。
APOI(px, py) 正規化瞳座標 光線強度アポダイゼーション係数。
APXD(x) 有効な面番号 アパチャーの X ディセンタ値。
APYD(x) 有効な面番号 アパチャーの Y ディセンタ値。
APTP(x) 有効な面番号 指定面のアパチャー タイプを表す整数コード。
ASIN(x) 数式 逆正弦 (ラジアン単位)。
ASPR() (なし) 現在のグラフィック デバイスのアスペクト比。
ATAN(x) 数式 逆正接 (ラジアン単位)。
ATYP() (なし) システム アパチャー タイプ コード : 0 は EPD、1 は F/#、2 は NA、3 は絞り面半径による定義
AVAL() (なし) システム アパチャー値。
CALD(i) インデックス 指定したインデックスの CALLMACRO バッファの数値を返します。「マクロからのマクロの呼び出し」を参照してください。
CHZN(x) 有効な面番号 面のチップ ゾーン。
CONF() (なし) 1 からコンフィグレーション数までの範囲の現在のコンフィグレーション番号を返します。
CONI(x) 有効な面番号 面のコーニック定数。
COSI(x) ラジアン単位の数式 式の余弦。
CURV(x) 有効な面番号 面の曲率。
EDGE(x) 有効な面番号 その面のクリア半径位置または半径位置でのエッジ厚
EOFF() (なし) ファイル の終端フラグ。ファイルの終端に達した場合は 1 を返し、それ以外の場合は 0 を返します。READ キーワードの実行後のみ有効です。
ETIM() (なし) 最後の TIMER から経過した時間 (秒単位)。
EXPE(x) 数式 e を底とする、式のべき乗。
EXPT(x) 数式 10 を底とする、式のべき乗。
FICL(vec#) 1 ~ 4 のベクトル番号。 ファイバ結合効率。「FICL() 関数の使用」を参照してください。
FLDX(x) 有効な視野番号 指定した視野の X 角度または高さ。
FLDY(x) 有効な視野番号 指定した視野の Y 角度または高さ。
FTAN() 有効な視野番号 指定した視野のタンジェンシャル角。
FTYP() (なし) 現在の視野タイプが°単位の角度の場合は 0、物体高の場合は 1、近軸像高の場合は 2、実像高の場合は 3、セオドライト角度の場合は 4 を返します。高さの単位は必ずレンズ ユニットです
FVAN(x) 有効な視野番号 指定した視野のビネッティング プロット。このコマンドは廃止されています。「FTAN()」を参照してください。
FVCX(x)、FVCY(x) 有効な視野番号 指定した視野の X または Y のビネッティング圧縮。
FVDX(x)、FVDY(x) 有効な視野番号 指定した視野の X または Y のビネッティング ディセンタ。
FWGT(x) 有効な視野番号 指定した視野の視野重み付け。
GABB(x) 有効な面番号 指定面のガラスのガラス カタログのアッベ数。
GAUS(x) 標準偏差 ガウシアン分布、ゼロ平均、および指定の標準偏差でランダム値を返します。
GETT(window, line, column)

抽出する数値のウィンドウ番号、行番号、および列番号。複数の列は、空白とタブ文字で区切って記述します。

開かれている任意のテキスト ウィンドウから数値を抽出します。この機能では、OpticStudio がウィンドウに表示できる任意の値を使用して計算可能です。この関数では、ピリオドは小数点の記号と見なされます。Windows 設定で現在選択されている文字を使用するには、GETL() を使用します。
GETL(window, line, column) 抽出する数値のウィンドウ番号、行番号、および列番号。列は、スペースで区切られます。 開かれている任意のテキスト ウィンドウから数値を抽出します。この機能では、OpticStudio がウィンドウに表示できる任意の値を使用して計算可能です。この関数では、Windows の [地域と言語] 設定で定義されている小数点の記号を使用します。「GETT()」も参照してください。
GIND(x) 有効な面番号 指定面のガラスのガラス カタログの D ライト屈折率。
GLCA(x) 有効な面番号 指定面のグローバル頂点の X ベクトル。
GLCB(x) 有効な面番号 指定面のグローバル頂点の Y ベクトル。
GLCC(x) 有効な面番号 指定面のグローバル頂点の Z ベクトル。
GLCM(surf, item) surf は有効な面番号、item は 1 ~ 12 の整数とする必要があります。 1 ~ 9 の項目の場合、戻り値は R1、R12、R13、R21、R22、R23、R31、R32、または R33 です。10 ~ 12 の項目の場合、戻り値はグローバル オフセット ベクトルの X、Y、または Z 成分です。「グローバル座標基準面」を参照してください。
GLCX(x) 有効な面番号 指定面のグローバル頂点の X 座標。
GLCY(x) 有効な面番号 指定面のグローバル頂点の Y 座標。
GLCZ(x) 有効な面番号 指定面のグローバル頂点の Z 座標。
GNUM(A$) 任意の文字列変数名 文字列 A$ が BK7 など有効なガラスの名前である場合、GNUM はガラス カタログ内のそのガラスの番号を返します。ガラス番号は、その後、面のガラス タイプを設定するため、SETSURFACEPROPERTY で使用されます。A$ がカタログ内のどのガラスにも対応しない場合、GNUM は 0 を返します。文字列が「MIRROR」の場合、GNUM は -1 を返します。
GPAR(x) 有効な面番号 指定面のガラスのガラス カタログの部分分散係数。
GRIN(s, w, x, y, z) 面番号、波長番号、X、Y、および Z 座標 面上の指定された X、Y、Z 位置で波長番号 w の光線に作用する屈折率を返します。分布屈折率媒質でもそれ以外の媒質でも機能します。
GTEM(code) 状態を取得するチェックボックスを code で指定します。[ガラス代替テンプレートを使用] (Use Glass Substitution Template) は 0、[不完全データのガラスを除外する] (Exclude Glasses With Incomplete Data) は 1、[標準] (Standard) は 11、[推奨] (Preferred) は 12、[旧式] (Obsolete) は 13、[特殊] (Special) は 14、[相対コストを使用] (Use Relative Cost)、[CR] (CR)、[FR] (FR)、[SR] (SR)、[AR] (AR)、[PR] (PR) は、それぞれ 21 ~ 26 を指定します。数値の場合、code は、[相対コスト] (Relative Cost)、[CR] (CR)、[FR] (FR)、[SR] (SR)、[AR] (AR)、[PR] (PR) がそれぞれ 31 ~ 36 です。 ガラス代替テンプレートからのデータを返します。チェックボックスは、false の場合 (チェックされていない場合) はゼロ、true の場合 (チェックされている場合) はゼロ以外をそれぞれ返します。
IMAE(seed) シード値 幾何光学的像解析の効率を返します。「幾何光学的像解析」の説明を参照してください。シードがゼロの場合、IMAE の呼び出しのたびに同じ乱数が使用されます。シードがゼロではない場合、IMAE の呼び出しのたびに一意の乱数が使用されます。
INDX(surface) 有効な面番号 主波長での屈折率。「ISMS」を参照してください。
INTE(x) 数式 引数を超えない最大の整数を返します。
ISCS(surface) 有効な面番号 指定した面が合成面ではなく、いずれかの面が完成している場合はゼロが返されます。
ISMS(surface) 有効な面番号 指定した面が奇数番目のミラーの場合、または奇数番目のミラーに続く面でミラーではない場合、戻り値は 1 となり、それ以外の場合、戻り値は 0 となります。
LOGE(x) 正の数式 e を底とした式の対数。
LOGT(x) 正の数式 10 を底とした式の対数。
LOST(code) エラーにより失われたエネルギーを返す場合、code は 1、しきい値により失われたエネルギーの場合は 2 です。 失われたエネルギーの後に最近の MSTR の追跡が続きます。
LVAL(A$) 任意の文字列変数名 文字列値。文字列 A$ の浮動小数点値を返します。ここでは、文字列内の小数点記号を解釈するため、現在のユーザー言語設定が使用されます。「SVAL」も参照してください。
MAGN(x,y) x と y は任意の実数です。 x の 2 乗と y の 2乗の和の平方根を計算します。
MAXF() (なし)

度の単位で表した最大半径方向角度、レンズ ユニットの単位で表した最大半径方向物体高さ、またはレンズ ユニットの単位で表した最大半径方向像高さ。どの値が返されるかは、視野が角度、物体高、像高のいずれによって定義されているかによります。

視野角の注釈 : 正規化の詳細および最大視野角と最大半径角の相違については「[視野タイプ] (Field Type)」を参照してください。

MAXG() (なし) 現在ロードされているガラスの数。
MCON(row, config, data) マルチコンフィグレーション エディタから抽出する行 (オペランド番号)、コンフィグレーション番号、およびデータ値。

マルチコンフィグレーション エディタの任意の行およびコンフィグレーションのデータを抽出します。この関数は MCOP に似ていますが、データの抽出に関して機能が拡張されています。

row 番号と config 番号がどちらもゼロの場合、MCON は data = 0、1、および 2 に対してそれぞれオペランドの数、コンフィグレーションの数、アクティブなコンフィグレーションの番号を返します。

行番号が 1 とマルチコンフィグ オペランドの数の間で、config 番号がゼロの場合、MCON は data = 0 ~ 4 に対してそれぞれその指定行のオペランド タイプ、整数 1、整数 2、整数 3、および文字列フラグを返します。これら 3 つの整数値は、さまざまなオペランドで面や波長番号などのさまざまな目的に使用されます。オペランド データがガラス名などの文字列値の場合、文字列フラグは 1、数値データの場合、文字列フラグは 0 です。

行番号が 1 とマルチコンフィグ オペランドの数の間で、config の数が有効である場合、MCON はそのオペランドの数値または文字列データを返します。

MCON によって返されるすべての文字列データは、MCON の呼び出し後に $buffer コマンドで抽出する必要があります。たとえば、次のコード サンプルでは、a$ の行 1 上にオペランドの名前を配置します。

dummy = MCON(1, 0, 0)

a$ = $buffer()

キーワード「SETMCOPERAND」も参照してください。

MCOP(row, config) マルチコンフィグレーション エディタの行 (オペランド番号) およびコンフィグレーション。 マルチコンフィグレーション エディタの任意の行および任意のコンフィグレーションからデータを抽出します。コンフィグレーション番号ゼロは、現在のコンフィグレーションを示します。キーワード「SETMCOPERAND」も参照してください。
MCSD(x) 有効な面番号 面の機械的半径。
MFCN() (なし) MFCN はレンズを更新し、評価関数を確認し、評価関数を更新してから、現在の評価関数値を返します。「OPER」を参照してください。
NCON() (なし) コンフィグレーションの数を返します。
NFLD() (なし) 定義されている視野の数。
NOBJ(surface) 有効なノンシーケンシャル面番号 ノンシーケンシャル面内で定義されているオブジェクトの数。
NPAR(surf, object, param) surf は面番号、object はオブジェクト番号、param は返す値のパラメータ番号です。 ノンシーケンシャル コンポーネント エディタのパラメータ列の値を返します。「SETNSCPARAMETER」を参照してください。
NPOS(surf, object, code) surf は面番号、object はオブジェクト番号、code は 1 ~ 6 で、基準オブジェクトの X、Y、Z、X ティルト、Y ティルトおよび Z ティルトの位置をそれぞれ示します。 ノンシーケンシャル コンポーネント エディタの位置列の値を返します。「SETNSCPOSITION」を参照してください。
NPRO(surf, object, code, face) surf は面番号、object はオブジェクト番号、code は SETNSCPROPERTY キーワードに定義されているとおり、face はフェイス番号です。

ノンシーケンシャル コンポーネント エディタで定義したオブジェクトのプロパティ ページの数値または文字列値を返します。code の値の詳細については、「SETNSCPROPERTY」を参照してください。文字列データを返す code を指定してこの関数を呼び出した後、$buffer() 関数を使用することで文字列値を抽出できます。たとえば、NSC 面 2 のオブジェクト 5 のコメント列を抽出するには、次の 2 つのコマンドを使用します。

dummy = NPRO(2, 5, 1, 0)

a$ = $buffer()

値 dummy は無視できます。文字列変数 a$ にオブジェクトのコメントが得られます。

NSDC(surf, object, pixel, data)

surf の値は、ノンシーケンシャル グループの面数を示します。

object の数値は目的のディテクタを示します。pixel は返されるピクセル値を示します。data は、実数部が 0、虚数部が 1、振幅が 2、コヒーレント強度が 3 です。

「NSTR」も参照してください。

object の数値がディテクタ (矩形) オブジェクトに対応している場合、指定のピクセルのコヒーレント強度データが返されます。コヒーレント強度は、それぞれ、すべての入射光線にわたって合計された、実数部分、虚数部分、振幅、およびコヒーレント強度の 4 つの数値で構成されます。

pixel の数値がゼロの場合は、そのディテクタ オブジェクトのすべてのピクセル値のデータの合計が返されます。

NSDD(surf, object, pixel, data)

surf の値は、ノンシーケンシャル グループの面数を示します。

object の数値は目的のディテクタを示します。

pixel および data の引数の詳細については、右の説明を参照してください。

「NSTR」も参照してください。

object の数値がゼロの場合、すべてのディテクタがクリアされ、ゼロが返されます。object の数値がゼロより小さい場合、object の数値の絶対値で定義されたディテクタがクリアされ、ゼロが返されます。

object の数値がディテクタ (矩形)、面、または体積オブジェクトに対応している場合、指定のピクセルのインコヒーレント強度データが返されます。

pixel 引数と data 引数の詳細については、「NSDD」を参照してください。この ZPL 関数は、NSDD 最適化オペランドと同じ pixel 引数と data 引数をサポートしています。

この関数は、NSDD 最適化オペランドで提供されている # Ignored 引数の値の指定はサポートしておらず、# Ignored の値は常にゼロと見なされます。

評価関数のオペランド NSDD とは異なり、この ZPL 数値関数 NSDD() では、空間周波数を渡す方法がないことから、pixel の値として -14 と -15 をサポートしていません。ZPL による幾何光学的 MTF の計算については、「GETNSCMTF」を参照してください。

NSDE(surf, object, pixel, angle, data, wavelength)

surf の値は、ノンシーケンシャル グループの面数を示します。

object の数値は目的のディテクタを示します。

引数 pixel、angle、data および wavelength の詳細については、右の説明を参照してください。

「NSTR」も参照してください。

object の数値がゼロの場合、すべてのディテクタがクリアされ、ゼロが返されます。object の数値がゼロより小さい場合、object の数値の絶対値で定義されたディテクタがクリアされ、ゼロが返されます。

object の数値がディテクタ (色) オブジェクトに対応している場合、指定のピクセルのデータが返されます。

引数 pixel、angle、data および wavelength の詳細については、最適化オペランドの「NSDE」を参照してください。この ZPL 関数は、NSDE 最適化オペランドと同じ pixel、angle、data および wavelength の各引数をサポートしています。

この関数は、NSDD 最適化オペランドで提供されている # Ignored 引数の値の指定はサポートしておらず、# Ignored の値は常にゼロと見なされます。

NSDP(surf, object, pixel, data)

surf の値は、ノンシーケンシャル グループの面数を示します。

object の数値は目的のディテクタを示します。

pixel および data の引数の詳細については、右の説明を参照してください。

「NSTR」も参照してください。

object の数値がゼロの場合、すべてのディテクタがクリアされ、ゼロが返されます。object の数値がゼロより小さい場合、object の数値の絶対値で定義されたディテクタがクリアされ、ゼロが返されます。

object の数値がディテクタ (極) オブジェクトに対応している場合、指定のピクセルのデータが返されます。

pixel 引数と data 引数の詳細については、「NSDP」を参照してください。この ZPL 関数は、NSDP 最適化オペランドと同じ pixel 引数と data 引数をサポートしています。

NSUR() (なし) 定義されている面の数。
NWAV() (なし) 定義されている波長の数。
OBJC(A$) 任意の文字列変数名 コメント付きのオブジェクト。コメントが文字列 A$ と一致する最初のノンシーケンシャル オブジェクト番号を返します。比較は大文字と小文字が区別されます。どの NSC オブジェクトにも一致するコメントがない場合、この関数は -1 を返します。
OCOD(A$) OpticStudio 最適化オペランドの名前である任意の文字列変数またはリテラル。 OPEV 関数で使用される最適化オペランドのコード番号。
ONUM(A$) 任意の文字列変数名

文字列 A$ が EFFL などの有効な最適化オペランドの名前である場合、ONUM はそのオペランドの ID 番号を返します。

そのオペランド ID 番号は、その後 SETOPERAND によるメリット ファンクション エディタでのオペランド タイプの設定に使用できます。A$ がどのオペランド名にも対応しない場合、ONUM は 0 を返します。

OPDC() (なし) 光路差。RAYTRACE の呼び出し後にのみ有効です。主光線を追跡できない場合、OPDC は有効なデータを返しません。RAYTRACEX は OPDC をサポートしていません。
OPER(row, col) メリット ファンクション エディタの行 (オペランド番号) および列 (データ タイプ)。

メリット ファンクション エディタの任意の行および列のデータを抽出します。row はオペランド番号と同じです。col は、タイプの場合は 1、割り込み 1 の場合は 2、割り込み 2 の場合は 3、データ 1 ~ データ 4 の場合は 4 ~ 7、ターゲットの場合は 8、重みの場合は 9、値の場合は 10、寄与率の場合は 11、データ 5 ~ データ 6 の場合は 12 ~ 13 です。

BLNK オペランドからコメントを取得するには、列番号 2 を使用します。これにより、文字列バッファにコメントが得られます。たとえば、行 1 のコメントを取得するには、次のようにします。

dummy = OPER(1,2)

a$ = $buffer()

ダミー変数の値は無視でき、a$ にコメント文字列が得られます。

OPER はレンズまたは評価関数を更新せず、現在のデータを返します。「OPEV」、「MFCN」、およびキーワード「SETOPERAND」を参照してください。

OPEV(code, int1, int2, data1, data2, data3, data4) code は最適化オペランド コード (関数「OCOD」を参照)、int1 ~ int2、および data1 ~ data4 は、そのオペランドに定義される値です。「最適化オペランド」を参照してください。

最適化オペランドを評価関数に追加しなくても、その最適化オペランドで計算される値を計算できます。これは、最適化オペランドからすでに得られるようになっている数値の計算に便利です。たとえば、EFFL オペランドから EFL を計算するには、次のコードを使用します。

C = OCOD("EFFL")

E = OPEV(C, 0, 1, 0, 0, 0, 0)

OPEV では 7 つの入力引数の値を必ずすべて指定します。最適化オペランドに必要なパラメータが 6 つ以下の場合は、上記の例のように 0 を追加して値を 7 つにします。

「OPER」、「OCOD」、「MFCN」、およびキーワード

「SETOPERAND」も参照してください。

OPGT など一部の最適化オペランドは、他のオペランドのコンテキスト内でのみ意味を成します。OPEV は、先行するオペランドの存在に依存しないオペランドに対してのみ機能します。次の「OPEW」も参照してください。

OPEW(code, int1, int2, data1, data2, data3, data4, data5, data6) code は最適化オペランド コード (関数「OCOD」を参照)、int1 ~ int2、および data1 ~ data6 は、そのオペランドに定義される値です。「最適化オペランド」を参照してください。 この関数は OPEV とよく似ています。主な違いは、OPEW ではサポートされる引数が 2 つ追加されている点です。一部の最適化オペランドでは、4 つではなく、最大 6 つのデータ値を使用します。
OPTH(x) 有効な面番号 光線に沿った指定面までの光路長。RAYT や RAYO とは異なり、OPTH では、格子、ホログラム、バイナリ オプティクスなどの回折面によって付加される位相が考慮されます。RAYTRACE の呼び出し後にのみ有効です。主光線を追跡できない場合、OPTH は有効なデータを返しません。RAYTRACEX は OPTH をサポートしていません。
PARM(n,s) 有効なパラメータ番号と面番号 面「s」のパラメータ「n」。
PIXX(A$) BMP、JPG、または PNG グラフィック ファイルへのフル パスを含む文字列変数。 グラフィック内の X 方向のピクセル数。
PIXY(A$) BMP、JPG、または PNG グラフィック ファイルへのフル パスを含む文字列変数。 グラフィック内の Y 方向のピクセル数。
PMOD() (なし) 近軸モードがオフの場合は 0、それ以外の場合は 1。
POWR(x,y) x と y は任意の数 x の y 乗の絶対値を計算します。
PVEX() (なし) ZPLM 最適化オペランドの data5 パラメータ。
PVEY() (なし) ZPLM 最適化オペランドの data6 パラメータ。
PVHX() (なし) ZPLM 最適化オペランドの data1 パラメータ。
PVHY() (なし) ZPLM 最適化オペランドの data2 パラメータ。
PVPX() (なし) ZPLM 最適化オペランドの data3 パラメータ。
PVPY() (なし) ZPLM 最適化オペランドの data4 パラメータ。
PWAV() (なし) 主波長番号。
RADI(x) 有効な面番号 面の曲率半径。面の半径が無限である場合、RADI は 0.0 を返します。この可能性は、ゼロ除算エラーの可能性を回避するために考慮する必要があります。
RAGL(x) 有効な面番号 面に従う光線のグローバル X 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAGM(x) 有効な面番号 面に従う光線のグローバル Y 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAGN(x) 有効な面番号 面に従う光線のグローバル Z 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAGX(x) 有効な面番号 光線交差のグローバル X 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAGY(x) 有効な面番号 光線交差のグローバル Y 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAGZ(x) 有効な面番号 光線交差のグローバル Z 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAND(x) 数式 0 から式までの間で均一に分布するランダムな浮動小数点数。この関数の前に RANDOMIZE キーワードを呼び出し、乱数シードを変更することをお勧めします。特に、NSC 光線追跡オペランド (NSTR) を使用している場合は、乱数ジェネレータを再シードするため RANDOMIZE が必要となります。
RANX(x) 有効な面番号 面の法線の X 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RANY(x) 有効な面番号 面の法線の Y 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RANZ(x) 有効な面番号 面の法線の Z 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYE() (なし) 光線追跡エラー フラグ。エラーがない場合は 0。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。詳細については、「RAYTRACE」キーワードを参照してください。
RAYL(x) 有効な面番号 面に従う光線の X 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYM(x) 有効な面番号 面に従う光線の Y 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYN(x) 有効な面番号 面に従う光線の Z 方向余弦。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYO(x) 有効な面番号 前の面から指定面までの光線の光路長。光路長とは、経路長に屈折率を乗算した値です。経路長と屈折率のいずれかまたは両方が負数になることもあります。ノンシーケンシャル面内の光線の場合、RAYO は、光線とオブジェクトの交差位置まで光線が進んだ距離に屈折率を乗算してそのオブジェクトまでの光路長を計算します。その光線が通過したすべてのオブジェクトでこの計算を実行し、その合算値を返します。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。「OPTH」および「RAYT」も参照してください。
RAYT(x) 有効な面番号 前の面から指定面までの光路長。光線路長は負の数にできます。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。「OPTH」および「RAYO」も参照してください。ノンシーケンシャル面内の光線の場合、RAYT はすべてのセグメントに沿った光路長の合計を返します。「RAYO」も参照してください。
RAYV() (なし) ビネッティングのない光線の場合は 0、それ以外の場合はビネッティングされている面番号。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYX(x) 有効な面番号 光線交差の X 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYY(x) 有効な面番号 光線交差の Y 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RAYZ(x) 有効な面番号 光線交差の Z 座標。RAYTRACE または RAYTRACEX の呼び出し後にのみ有効です。
RELI(f) 視野番号 指定した視野位置の RI。
SAGG(x,y,z) x、y は、面番号 z における、レンズ ユニットでの座標です。 この面で指定した点における、レンズ ユニットでのサグを計算します。
SCOM(A$, B$) 任意の 2 つの文字列変数名 これらの文字列が同じ場合、SCOM は 0 を返します。A$ が B$ より小さい場合、SCOM は 0 より小さい値を返し、それ以外の場合は 0 より大きい値を返します。
SDIA(x) 有効な面番号 面のクリア半径または半径
SIGN(x) 数式 引数がゼロより小さい場合 -1、引数がゼロの場合 0、引数が正の場合 +1 を返します。
SINE(x) ラジアン単位の数式 式の正弦。
SLEN(A$) 任意の文字列変数名 文字列変数 A$ の長さを返します。この長さは、文字列変数を構成する文字の数です。
SOLM(operand, config, code) operand はマルチコンフィグレーション オペランド番号です。config はコンフィグレーション番号です。code は、ステータスの場合は 0、ピックアップ コンフィグレーション番号の場合は 1、ピックアップ オペランド行の場合は 2、ピックアップ スケールの場合は 3、ピックアップ オフセットの場合は 4、現在のオペランドの数値または文字列値の場合は 5、ZPL マクロ ソルブ名の場合は 6、ガラス カタログ名の場合は 7 です。すべてのコードがすべてのソルブ ステータス タイプで使用されるわけではありません。 戻り値は、ソルブ タイプに関するデータ、および指定したマルチコンフィグレーション オペランドおよびコンフィグレーションのデータです。code がステータスを示す 0 のとき、戻り値は、固定の場合 0、変数の場合 1、ピックアップの場合 2、熱ピックアップの場合 3、ZPL マクロの場合 4、ガラス代替ソルブの場合 5 です。文字列データを返す code を指定してこの関数を呼び出した後、$buffer() 関数を使用することで文字列値を抽出できます。ソルブ データおよびソルブ パラメータの意味の詳細については、「[ソルブ タイプ] (Solve Types) (マルチコンフィグレーション エディタ)」を参照してください。
SOLV(surf, code, param) surf は面番号です。code は、曲率の場合は 0、厚みの場合は 1、ガラスの場合は 2、コーニックの場合は 3、半径の場合は 4、TCE の場合は 5 です。パラメータ データの場合、code は 100 にパラメータ番号を加算した値です。追加データの場合、code は 300 に追加データ番号を足した値です。param は 0 ~ 4 の整数です。 戻り値は、指定面のソルブ タイプに関するデータです。param が 0 の場合、ソルブ タイプに対応する整数が返されます。param が 1 ~ 3 の場合、データはソルブ パラメータです。param が 4 の場合、データはピックアップ列番号です。文字列データを返す code を指定してこの関数を呼び出した後、$buffer() 関数を使用することで文字列値を抽出できます。ソルブ データおよびソルブ パラメータの意味の詳細については、「[ソルブ タイプ] (Solve Types) (レンズ データ エディタ)」を参照してください。
SOSO(code) code には、現在実行中のマクロ ソルブの面番号を返す場合は 0、オブジェクト番号を返す場合は 1 を指定します。 この関数は、現在ソルブとして実行されているマクロの面番号またはオブジェクト番号、またはその両方を返します。マクロがソルブとして使用されていない場合、これらの関数は無意味なデータを返します。
SPRO(surf, code) surf は面番号です。code の値は、SETSURFACEPROPERTY キーワードで定義したとおりです。code の値は整数のみで、ニーモニックはサポートされていません。

レンズ データ エディタで定義した面のプロパティ ページまたはエディタの数値または文字列値を返します。code の値の詳細については、「SETSURFACEPROPERTY、SURP」を参照してください。文字列データを返す code を指定してこの関数を呼び出した後、$buffer() 関数を使用することで文字列値を抽出できます。たとえば、面 4 のコメント列を抽出するには、次の 2 つのコマンドを使用します。

dummy = SPRO(4, 1)

a$ = $buffer()

値 dummy は無視できます。文字列変数 a$ に面のコメントが得られます。SETSURFACEPROPERTY で value2 を使用する必要があるプロパティは SPRO ではサポートされません。代わりに SPRX を使用してください。これらのプロパティには、パラメータ データ、追加データ、コーティング層乗数や屈折率のオフセットの値およびステータスが含まれます。

SPRX(surf, code, value2) surf は面番号です。code と value2 の値は、SETSURFACEPROPERTY キーワードで定義したとおりです。code の値は整数のみで、ニーモニックはサポートされていません。 この関数は SPRO に似ています。主な相違は、SPRX では、サポートされる引数が 1 つ追加されている点です。SPRX を使用する必要があるのは、SETSURFACEPROPERTY によって設定されるパラメータのうち、value2 引数を使用するものだけです。「SETSURFACEPROPERTY、SURP」を参照してください。
SRCN(A$, n) A$ は任意の文字列変数名です。一致する面のうち、何番目の面の面番号を返すかを n で指定します。 コメントが一致する面の n 番目。コメントが文字列 A$ と一致する面のうち、n 番目の面の面番号を返します。比較は大文字と小文字が区別されます。n が正の場合、検索は前方 (面番号 0 から面番号が増加する方向) に進み、n が負の場合、検索は後方 (面番号 0 に向かって面番号が減少する方向) に進みます。一致するコメントが n 個未満の場合、この関数は -1 を返します。n に 0 を指定すると、コメントが一致する面の数を返します。
SQRT(x) 正の数式 式の平方根。
STDD() - 廃止 この関数は廃止されています。代わりに SRPO を使用してください。
SURC(A$) 任意の文字列変数名

コメント付きの面。コメントが文字列 A$ と一致する最初の面の番号を返します。比較は大文字と小文字が区別されます。面に一致するコメントがない場合、この関数は -1 を返します。

公差解析で SURC 関数から返される面番号は、必ず解析実施前の面番号です。面が自動的に追加されていても、これは変わりません。この問題を回避するには、SURC ではなく、数値関数である SRCN を使用します。

SVAL(A$) 任意の文字列変数名 文字列値。文字列 A$ の浮動小数点値を返します。文字列内で、ピリオド記号は小数点記号と見なされます。「LVAL」も参照してください。
SYPR(code) code の値は、SETSYSTMPROPERTY キーワードで定義したとおりです。code の値は整数のみで、ニーモニックはサポートされていません。

該当するシステム データの数値または文字列値を返します。code の値の詳細については、「SETSYSTEMPROPERTY、SYSP」を参照してください。文字列データを返す code を指定してこの関数を呼び出した後、$buffer() 関数を使用することで文字列値を抽出できます。たとえば、レンズ タイトルを抽出するには、次の 2 つのコマンドを使用します。

dummy = SYPR(16)

a$ = $buffer()

値 dummy は無視できます。文字列変数 a$ にレンズ タイトルが得られます。SETSYSTEMPROPERTY で value2 を使用する必要があるプロパティは SYPR ではサポートされません。

TANG(x) ラジアン単位の数式 式の正接。
関数 引数 戻り値
TMAS() (なし)

面のレンズの総重量 (グラム単位)

像面に対しては 1。

THIC(x) 有効な面番号 面の厚み。
TOLV(op, col) 整数 op は公差解析オペランド番号で、col は公差解析データ エディタ内の列番号です。説明を参照してください。

公差解析データ エディタの数値または文字列値を返します。col が 1、2、または 3 の場合、戻り値は、そのオペランド タイプで使用される整数 1、2、または 3 の値です。col が 4 または 5 の場合、公差の最小値または最大値が返されます。col が 6 の場合、"逆感度公差解析の実行中に調整を行わない" フラグが返されます (チェックされている場合は 1、チェックされていない場合は 0)。col が 7 の場合、[公差解析時にこのオペランドを無視する] (Ignore this Operand During Tolerancing) フラグが返されます (チェックされている場合は 1、チェックされていない場合は 0)。

col が 90 の場合、公差の公称値が返されます。

col の値が 0 または 99 の場合、それぞれオペランド タイプ名またはオペランド コメントがバッファ文字列に配置されます。たとえば、オペランド 7 のオペランド名を抽出するには、次の 2 つのコマンドを使用します。

dummy = TOLV(7, 0)

a$ = $buffer()

値 dummy は無視できます。文字列変数 a$ にオペランド名が得られます。文字列関数 $TOLOPERAND と

$TOLCOMMENT も参照してください。これらは類似した関数を実行します。

UNIT() (なし) 現在の単位のタイプが mm、cm、インチ、または m の場合、それぞれ 0、1、2、または 3 を返します。
VEC1(x) 正の添字の値 指定の添字でのアレイの変数の値を返します。
VEC2(x) 正の添字の値 指定の添字でのアレイの変数の値を返します。
VEC3(x) 正の添字の値 指定の添字でのアレイの変数の値を返します。
VEC4(x) 正の添字の値 指定の添字でのアレイの変数の値を返します。
VERS() (なし) OpticStudio プログラムのバージョンを返します。バージョンは、yymmdd の形式を取ります。たとえば、2005 年 6 月 15 日の OpticStudio のリリースは、050615 となります。
WAVL(x) 有効な波長番号 μm 単位の波長。
WINL() (なし) キーワード OPENANALYSISWINDOW によって最近開かれた解析ウィンドウの番号を返します。
WINN() (なし) 開いている解析ウィンドウの数を返します。
WWGT(x) 有効な波長番号 波長の重み付け。
XMIN() (なし) グラフィック ウィンドウの最小の X 座標。
XMAX() (なし) グラフィック ウィンドウの最大の X 座標。
関数 引数 戻り値
YMIN() (なし) グラフィック ウィンドウの最小の Y 座標。
YMAX() (なし) グラフィック ウィンドウの最大の Y 座標。

次へ :