この記事では、ZOS-API、ZPL、およびDLLの比較について説明します。 OpticStudioとの相互作用、コード実行、構文、およびデータアクセスと処理について説明します。
著者 Haosheng Hu
Introduction
はじめに
OpticStudioの [プログラミング] タブでは、Zemaxプログラミング言語(ZPL)、アプリケーション プログラミング インターフェイス(ZOS-API)、ダイナミックリンク ライブラリ(DLL)などの OpticStudio のプログラミング機能にユーザーがアクセスできます。 プログラミングの各方法には、独自の専門性があります。 この記事では、3つのプログラミング機能のそれぞれの特徴と違いについて説明します。
ZOS-APIとZPLの違い
ZOS-APIとZPLは、構文、アプリケーション、ランタイム環境など、多くの点で異なります。 次のセクションでは、両方のプログラミング方法の概要を示し、これらの違いを詳細に説明します。
ZOS-APIとは
ZOS-APIは、OpticStudio用に開発されたアプリケーション プログラミング インターフェイスで、アプリケーションへの接続とアプリケーションのカスタマイズを可能にします。 ZOS-APIはCOMインターフェイスに依存しますが、.NETライブラリに根ざしており、APIを使用したプログラミングは、C ++、C#、Python、MATLABなどのAPIライブラリにアクセスできるプログラミング言語を使用して実行できます。 ZOS-APIを使用すると、アプリケーションは、開かれたOpticStudioのインスタンスと直接通信するか、OpticStudioをバックグラウンド プロセスとして実行できます。 さまざまな通信モードの詳細については、ZOS-APIユーザー向けのサンプルコードを参照してください。
ZPLとは
Zemaxプログラミング言語(ZPL)は、ユーザーがOpticStudio内で独自のプログラムを直接作成できるマクロ言語です。 ZPLができること:
- キーボードやマウスの繰り返し動作を自動化する
- OpticStudioデータに基づいて計算を実行する
- 特定の形式でデータをエクスポートする
- データのグラフとテキストリストを作成する
ZPLの詳細については、「ZPLとは」を参照してください。
違い
ZOS-APIとZPLには基本的な違いがいくつかあります。
-
インターフェース
ZPLマクロはテキストファイルです。 OpticStudio内のZPLエディターで作成および編集できます。 ZPLマクロは、プログラミングの経験を必要としません。 簡単に習得でき、一連のコマンドを実行する強力なツールを提供します。 次のスクリーン ショットは、ZPLエディターのZPLマクロを示しています。
ZOS-APIアプリケーションは、APIライブラリにアクセスできるプログラミング言語で記述されています。 ZOS-APIでは、MATLAB、Python、C ++、C#の4つのプログラミング言語にサポートされています。 次のスクリーンショットは、ZOS-APIに接続するためのMatlabコードを示しています。
- コードの実行
ZPLマクロはOpticStudioグラフィカル ユーザー インターフェイス(GUI)内で実行されます。 ZPLマクロを実行または編集するには、[プログラミング... ZPLマクロ...編集/実行]をクリックします。
ZOS-APIアプリケーションの場合、実行は使用されているモードに依存します。
- スタンドアロン アプリケーションは、バックグラウンド プロセスとしてOpticStudioの新しいインスタンスを起動する外部実行可能(.exe)ファイルです。 このモードでは、OpticStudioはユーザー インターフェイスなしでサービスとして実行されます。 OpticStudioインスタンスの最大数に到達しないように注意する必要があります。
- ユーザー拡張機能またはユーザー分析はOpticStudio GUIから起動され、それぞれ組み込みツールまたは分析機能と同様の方法で動作します。 これらは、プログラミング... ZOS-API.NETアプリケーション グループ...ユーザー分析/拡張機能からアクセスできます。
- インタラクティプ拡張機能は、プログラミング... ZOS-API.NET アプリケーション... インタラクティプ拡張機能から起動します。 外部ZOS-APIアプリケーションをOpticStudioの既存のインスタンスに接続します。
-
シンタックス
ZPLは、光線追跡機能を備えたBASICプログラミング言語に似た、解釈された「マクロ」または「スクリプト」言語です。
すべてのZOS-APIプログラムと拡張機能は、C#、C ++、MATLAB、Pythonなどの外部プログラミング言語で記述されています。
-
データアクセスと処理
ZPLマクロは、テキストファイルに保存された一連のコマンドで構成されています。 コマンドは、変数(数値または文字列)の割り当て、キーワードを使用した関数の呼び出し、またはコメントにすることができます。 ZPLでは、すべてのデータアクセスと処理は、定義されたコマンドに基づいています。 ZPLは解釈されるため、複雑な計算を実行する場合、完全にコンパイルされたコードよりも遅くなる可能性があります。
ZOS-APIでは、データアクセスとデータ処理がより柔軟で強力です。 ZOS-APIは、MATLABなどの他の高度なプログラミング言語の数値解析および行列計算機能を利用できます。
-
相互運用性
ZPLはZOS-APIを介して呼び出すことはできません。逆も同様です。
- 比較表
ZOS-API | ZPL | |
インターフェース |
選択されたプログラミング言語次第 | OpticStudio内 |
コード実行 | 非常に柔軟(実行可能なファイル、プログラミング言語から実行、またはOpticStudioに組み込むことができます) | OpticStudio内 |
シンタックス | 選択されたプログラミング言語次第 | BASICに似ており、使いやすい |
データアクセスと処理 |
柔軟で強力なデータアクセスと処理 他のプログラミング言語の数値解析および行列計算機能を活用できます(MATLABを使用したZOS-APIなど) |
インタープリタ型言語、複雑な計算のために完全にコンパイルされたコードよりも遅くなる可能性があります |
ZOS-APIとDLLの違い
DLLとは
ダイナミックリンク ライブラリ(DLL)は共有ライブラリです。 Windowsプログラムですが、EXEプログラムのように直接実行することはできません。 代わりに、別のプログラム(ここではOpticStudio)によって呼び出されます。 DLLは必要に応じて呼び出され、終了すると閉じられます。 DLLは必要な場合にのみ使用されるため、メモリの点でDLLはよりいい効率があります。 OpticStudioでは、DLLに送信されるデータが指定され、制限されます。 ユーザー定義面、ユーザー定義散乱など、さまざまな種類のDLLがあります。DLLの種類ごとに、データ構造はサンプルDLLのソースコードの{Zemax} / DLLにあります。 DLLの詳細については、「How to compile a User-Defined surface」を参照してください。
違い
ZOS-APIとDLLの最も一般的な違いは、クライアントとサーバーの役割が逆になっていることです。
- ZOS-APIスクリプトは、タスクを実行するサーバーとしてOpticStudioを呼び出すクライアントです。 ZOS-APIスクリプトはOpticStudioインターフェースにアクセスできます。 OpticStudioの機能のほぼすべての側面は、ZOS-APIスクリプトによってアクセスおよび実行できます。 APIスクリプトには、光線追跡などの他の機能も含まれています。
- DLLはサーバーとして機能します。 OpticStudioクライアントは、DLLから特定のデータを送信および要求し、OpticStudioに返します。 OpticStudioはデータ交換を担当し、 DLLの操作の範囲を制限します。
KA-01806
コメント
記事コメントは受け付けていません。