<ZPLMオペランドを使ってマクロで計算した値を返す方法>もしマクロの作成、編集、保存、そして実行にあまり慣れていない場合は、この演習の前に以下のフォーラム記事を読んでください。
「ZPLでキーボードとマウスの動きをオートメーション化する方法」
http://www.prolinx.co.jp/zemaxforum/viewtopic.php?f=23&t=537&sid=069770c0bcf2240c9435943aad0a9534ここでは特定の実効Fナンバーを計算し、最適化することとします。
もちろん、ZEMAXにはこれを実行するためのあらかじめプログラミングされたオペランド(WFNO)がありますが、実証のためにここではこのオペランドは使えないこととします。
その代わりに、マクロでこの値を計算し、その計算した値をメリットファンクションに返します。
そして目的のターゲットを最適化します。
ZEMAXで定義されているように、実効Fナンバーはnが像空間の屈折率で、θが像空間の実マージナル光線角の時、以下のように求められます。
添付ファイル:
Working%20Fnumber.gif [ 595 バイト | 表示回数: 1335 回 ]
この関係性を踏まえ、マクロ内で実マージナル光線を追跡し、実効Fナンバーを計算します。
添付ファイル:
new%20macro%20code.gif [ 4.42 KiB | 表示回数: 1336 回 ]
OPRETURNキーワードの使用に留意してください。
このキーワードはグローバルアレイの0ポジションで得られる“X”の値を保存します。
これはグローバルアレイの位置番号で、メリットファンクションエディタでZPLMオペランドの“Dat#”欄に入力されます。
添付ファイル:
Dat%20Number%20in%20MFE.gif [ 7.74 KiB | 表示回数: 1336 回 ]
上図の“Mac#”はマクロ番号に一致します。
ZPLMオペランドで呼び出す目的で作成された各マクロには特定のファイル名“ZPLxx.ZPL”をつける必要があります。
マクロ番号は0から99までの任意の番号です。
よって、ZPL17.ZPLは有効なファイル名であり、メリットファンクションエディタの適切なセルに17の“Mac#”を特定することで実行されます。
この例では、マクロをZPL10.ZPLと名付け、適切なディレクトリに保存します。
メリットファンクションエディタでは、ZPLMオペランドを入力し、”Mac#”と”Dat#”をそれぞれ10と1、と入力します。
添付ファイル:
mac%20and%20dat%20numbers%20together.gif [ 7.67 KiB | 表示回数: 1335 回 ]
マクロを実行して抽出した値を返し、メリットファンクションエディタをアップデートします。
添付ファイル:
Value%20reteurned%20to%20ZPLM%20operand.gif [ 7.86 KiB | 表示回数: 1333 回 ]
先ほど計算して返した実効Fナンバーは4.9782です。
ここでこの値が正しいかどうかを確かめてみましょう。
WFNOオペランド(内蔵されている実効Fナンバーの計算)を入力し、メリットファンクションエディタをアップデートしてください。
理想的な値が求められました。
添付ファイル:
ZPLm%20and%20WFNO.gif [ 9.02 KiB | 表示回数: 1330 回 ]
このテクニックは一度の呼び出しで複数の値をマクロに戻すのに使われ、このマクロは最適化やより詳細な解析のためにメリットファンクションエディタへ値を単に報告する目的で使われます。
(先ほども触れたZEMAXユーザーズガイド第14章の「User defined operands/ユーザー定義のオペランド」にこの詳細が記載されています。)
ZPLMは驚くべきスピードと柔軟性で数ある最適化の内蔵オペランドではまだ対応できない値を返し、最適化を行います。