ZOS-API.NET の概要


ZOS-API.NET の概要

Author
Message
Zemax_Japan
Zemax_Japan
Forum Member
Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)Forum Member (1K reputation)

Group: Administrators / Zemax Staff
Posts: 257, Visits: 2.8K
概要 : OpticStudio のアプリケーション プログラミング インターフェイス (API) により、最新のソフトウェア テクノロジを使用してアプリケーションとの接続やアプリケーションのカスタマイズが実現します。

著者 :


公開日 : 
2015 年 5 月 3 日

サンプル ファイル :


対象 : 
OpticStudio
 ZOS-API.NET
 Zemax のプログラミング



はじめに

最新のソフトウェア テクノロジを使用して OpticStudio でアプリケーションとの接続やアプリケーションのカスタマイズを実現できるように、アプリケーション プログラミング インターフェイス (API) が開発されています。この API は COM インターフェイス上で動作しますが、.NET ライブラリに基づいていることから、API によるプログラミングではユーザーの都合に合わせて C++ (COM) と C# (.NET) のいずれも使用できるようになっています。

アプリケーション プログラムと OpticStudio との接続は、次の 4 つのプログラム モードのいずれかに分類されます。

1) スタンドアロン モード :
このモードでは、アプリケーションから OpticStudio のまったく新しいインスタンスを起動します (他のモードではインスタンスが開いている必要があります)。このため、このモードでアプリケーションを起動するには、開いている OpticStudio のインスタンスが 1 つであるか、インスタンスがまったく開いていないことが必要です (OpticStudio のライセンス上の制限に違反しないようにするためです)。
このモードでは、実質的に OpticStudio はユーザー インターフェイスが表示されないサービスとして実行されます。

2) ユーザー拡張機能モード :
このモードでは、プロセス間通信向けとして DDE プロトコルに基づいて作成した拡張機能に類似のアプリケーションを構築できます (DDE 拡張機能の詳細については、http://www.zemax.com/support/knowledgebase?categoryname=Extensions を参照してください。
ZOS-API の導入に伴い、DDE は廃止される予定です)。このモードで実行する場合は、プログラムの変更に合わせてユーザー インターフェイスを最新の状態に維持するかどうかを指定するトグルが用意されます。

3) ユーザー オペランド モード :
このモードは、メリット ファンクション エディタのユーザー定義オペランドとリンクしています。ユーザー定義オペランドは UDOC オペランドを使用してエディタに追加します。このモードでは、現在のレンズ光学系に対する変更も、ユーザー インターフェイスに対する変更もできません (つまり、このモードでは光学系のコピーに対する変更のみが可能です)。このモードでは、現在のファイルで開いている解析のリストを利用できません。解析の新しいインスタンスは、必要に応じていつでも実行できるからです。

4) ユーザー解析モード :
このモードは、1 つの解析ウィンドウとリンクしています。このモードはユーザー オペランド モードとほとんど同じですが、カスタム解析のデータの移入に使用される点のみが異なります。大部分の解析のデータは、OpticStudio で提供される最新のグラフィックを使用して表示されます。

これらのモードは、一般的に 2 つのカテゴリに分類されます。
その 1 つは完全制御 (スタンドアロン モードとユーザー拡張機能モード) です。これらのモードでは、一般的にレンズ設計とユーザー インターフェイスをユーザー側で全面的に制御できます。もう 1 つのカテゴリは、アクセス制限 (ユーザー オペランド モードとユーザー解析モード) です。これらのモードでは、ユーザーによる操作が既存のレンズ ファイルのコピーのみに制限されます。

4 つの使用可能なモードのいずれかでアプリケーションから OpticStudio との通信を初期化して確立すると、ファイルのロード、光学系設定の変更、任意の数の解析からのデータ取得が可能になります (以下で詳しく説明します)。
4 つの使用可能な通信モードのいずれでも、複数の光学系設計 (ZMX ファイル) をロードできます。


ZOS-API.NET 入門

ZOS-API.NET を介して OpticStudio に接続する方法は 2 種類あります。アプリケーションがスタンドアロンであれば、接続先とする OpticStudio のコピーがそのアプリケーション専用として起動します (スタンドアロン モード)。また、OpticStudio が実行中であれば、OpticStudio からアプリケーションが呼び出されます (その他すべてのモード。「インヒーレント」モードと呼びます)。

.NET および C# とのインターフェイスが可能な開発システムであれば、どれも適切に機能します。ここで挙げる例はすべて、Microsoft の Visual Studio 2012 .NET Framework 4.5 を使用し、C# で作成されています。

Visual Studio で新規プロジェクトを作成するには、次の手順を実行します。

[ファイル] → [新規] → [プロジェクト] を選択します。
[テンプレート] → [Visual C#] → [コンソール アプリケーション] を選択します。
[名前]、[場所]、および [ソリューション名] を、各自のソリューションやプロジェクトに適した情報に変更します。

次のような画面が表示されます。



[OK] をクリックしてソリューションまたはプロジェクトが生成されると、次のような画面が表示されます。



[ソリューション エクスプローラー] で [参照設定] を右クリックして、メニューから [参照の追加] を選択します。[参照マネージャー] の [参照] をクリックして、Zemax OpticStudio のインストール先ディレクトリに移動します。ZOSAPI.dll をクリックした後、Ctrl キーを押したまま ZOSAPI_Interfaces.dll をクリックして追加すると、次のような画面になります。



[追加] をクリックし、[OK] をクリックすると次の画面が表示されます。




[参照設定] を右クリックして、メニューから [参照の追加] を選択します。[参照マネージャー] の [参照] をクリックして zemax/ZOS-API/Libraries に移動します。ZOSAPI_NetHelper.dll をクリックすると、次の画面が表示されます。



[追加] をクリックすると、次の画面が表示されます。



[OK] をクリックすると、次の画面が表示されます。



[ソリューション エクスプローラー] → [参照設定] で ZOSAPI を右クリックして、メニューから [プロパティ] を選択します。



[ローカルにコピー] を [TRUE] から [FALSE] に変更します。

[ソリューション エクスプローラー] → [参照設定] で ZOSAPI_Interfaces を右クリックして、メニューから [プロパティ] を選択します。



[ローカルにコピー] を [TRUE] から [FALSE] に変更します。

ZOSAPI_NetHelper のプロパティはどれも変更しないようにします。


ボイラープレート コード

下記のコードは、ZOS-API.NET で構築するすべてのアプリケーションで必要となる標準的なボイラープレート コードです。これらのサンプル コードにはエラー処理ルーチンが記述されていません。専用のエラー処理を追加することを強くお勧めします。戻り値を使用する前に、それが NULL でないことを確認することをお勧めします。

同様に try/catch ブロックにあるラッピング コードは、異常な動作の処理に役立ちます。
ここで使用している変数名は、「その機能がわかるようにすること」を目的としていますが、当然のことながら、必要に応じて変更してかまいません。

注 : Main でシステムを初期化し、別の関数 (ZOSAPI_Worker) を呼び出したうえで、実際に API に接続して、アプリケーションの実際の作業が実行されます。
オペレーティング システムおよびコンパイラの最適化機能により、操作の最適化順序が強制的に適用されることがあるので、まだロードされていない関数が特定のコード シーケンスによって事前にロードされることがあります。したがって、Main で 2 番目の関数を呼び出し、その 2 番目の関数からアプリケーションのすべての「作業」を指示する手順とすることをお勧めします。

注 : 厳格な必須事項ではありませんが、API 向けに作成したアプリケーションの実行前にはライセンス ステータスを確認することをお勧めします。
ライセンスが最新でない場合、または OpticStudio への接続試行中に別のライセンス エラーが発生した場合、アプリケーションが適切に実行される可能性はきわめて低くなります。

スタンドアロン モードのボイラープレート コード

using ZOSAPI;

namespace My_ZOS_Application
{
class Program
{
static void Main(string[] args)
{
ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize();

ZOSAPI_Worker();
}

private static void ZOSAPI_Worker()
{
var TheConnection = new ZOSAPI_Connection();
var TheApplication = TheConnection.CreateNewApplication();

switch (TheApplication.LicenseStatus)
{
default: break;
case LicenseStatusType.EE: break;
case LicenseStatusType.IE: break;
case LicenseStatusType.SE: break;
case LicenseStatusType.Unknown: break;
case LicenseStatusType.KeyNotWorking: break;
case LicenseStatusType.NewLicenseNeeded: break;
}
}
}
}

インヒーレント モードのボイラープレート コード

using ZOSAPI;

namespace My_ZOS_Application
{
class Program
{
static void Main(string[] args)
{
ZOSAPI_NetHelper.ZOSAPI_Initializer.Initialize();

ZOSAPI_Worker();
}

private static void ZOSAPI_Worker()
{
var TheConnection = new ZOSAPI_Connection();
var TheApplication = TheConnection.ConnectToApplication();

switch (TheApplication.LicenseStatus)
{
default: break;
case LicenseStatusType.EE: break;
case LicenseStatusType.IE: break;
case LicenseStatusType.SE: break;
case LicenseStatusType.Unknown: break;
case LicenseStatusType.KeyNotWorking: break;
case LicenseStatusType.NewLicenseNeeded: break;
}
}
}
}


インヒーレント モードに関する注意事項

インヒーレント モードを使用してビルドするアプリケーションは、スタンドアロン モードを使用してビルドするアプリケーション同様に、実行可能 (.exe) ファイルにコンパイルされますが、インヒーレント モードのアプリケーションを OpticStudio で使用するには、.exe ファイルを OpticStudio のインストール先の特定のフォルダにコピー (またはビルド) する必要があります。この所定のフォルダ名は、ユーザー個人のインストール環境に固有です。ここでは {program} フォルダと表記します。このフォルダでは次の処理が必要です。
  • ユーザー拡張機能モードでビルドしたアプリケーションは、{program}\ZOS-API\Extensions フォルダに配置する必要があります。
  • ユーザー オペランド モードでビルドしたアプリケーションは、{program}\ZOS-API\Operands フォルダに配置する必要があります。
  • ユーザー解析モードでビルドしたアプリケーションは、{program}\ZOS-API\User Analysis フォルダに配置する必要があります。
{program}\ZOS-API\Extensions フォルダまたは {program}\ZOS-API\User Analysis フォルダに配置したアプリケーションは、[プログラミング] (Programming) タブの [ZOS-API アプリケーション] (ZOS-API Applications) にある該当するリストに表示されます。




ZOS-API.NET から使用できる機能

この記事の上記 2 つのセクション (「ZOS-API.NET 入門」および「ボイラープレート コード」) で述べた詳細の多くは、ZOS-API.NET に関する総合的なドキュメントから引用したものです。その内容は、OpticStudio ヘルプ ファイルの「ZOS-API の紹介」に記載されていて、[プログラミング] (Programming) タブの [ZOS-API アプリケーション] (ZOS-API Applications) にある [ZOS-APIヘルプ] (ZOS-API Help) アイコンを選択すると表示されます。



API を使用するアプリケーションを開発する前に、ヘルプ ファイルの総合的なドキュメントに目を通しておくことを強くお勧めします。
API で使用するシンタックスの説明および用例を表示するには、[プログラミング] (Programming) タブの [ZOS-API アプリケーション] (ZOS-API Applications) にある [ZOS-APIヘルプ] (ZOS-API Help) [ZOS-APIシンタックスヘルプ] (ZOS-API Syntac Help) アイコンを選択します。



下記に、ZOS-API.NET で現在使用可能な機能の概要を示します。

システム エクスプローラ
• すべてのプログラム モードで、あらゆる項目の値を取得および変更できます。

すべてのエディタ (レンズ データ、ノンシーケンシャル コンポーネント、マルチコンフィグレーション、メリット ファンクション、公差解析データ)
• すべてのプログラム モードで、あらゆるセルの値を取得および変更できます。
o いずれの場合も、セルは列見出しではなく列番号で指定します。
• すべてのプログラム モードで、プロパティ ダイアログのあらゆるデータの値を取得および変更できます。

解析
• 以下の解析では、API から直接設定を定義し、結果をデータ配列に直接取得できます。
o ディテクタ ビューア
o 像面湾曲と歪曲収差
o 縦収差
o 倍率色収差
o 軸上色収差
o 波面収差マップ
o 干渉図形
o フーコー解析
o FFT PSF
o FFT PSF 断面
o FFT 線像/エッジ像分布
o ホイヘンス PSF
o ホイヘンス PSF 断面
o FFT MTF
o FFT スルー フォーカス MTF
o FFT 面 MTF
o 視野に対する FFT MTF
o FFT MTF マップ
o ホイヘンス MTF
o ホイヘンス スルー フォーカス MTF
o ホイヘンス面 MTF
o 視野に対するホイヘンス MTF
o 幾何光学的 MTF
o 幾何光学的スルー フォーカス MTF
o 視野に対する幾何光学的 MTF
o 幾何光学的 MTF マップ
o 視野に対する RMS
o 波長に対する RMS
o 焦点位置に対する RMS
o RMS 視野マップ
o 回折エンクローズド エネルギー
o 幾何光学エンクローズド エネルギー
o 幾何光学的線像/エッジ像分布
o 拡張光源エンクローズド エネルギー
o 面のサグ
o 面の位相
o 面の曲率
o 面のサグ断面図
o 面の位相断面図
o 面の曲率断面図

上記の解析で得られた出力データは、現在のデータベースにあるデータに基づいていることもあれば (たとえば、開いたファイルからデータを読み取ってセッション ファイルに保存した場合)、解析の設定が変更されたうえで取得されていることもあります。結果には、計算値そのもののほかに、ユーザー インターフェイスに解析を表示する際に同時に表示するテキストや見出しのデータもすべて記述されています。

• 以下の解析では、API から直接設定を定義し、GetTextFile メソッドで結果を取得できます。
o 単一光線追跡
o 横収差図
o 標準スポット ダイアグラム
o フットプリント ダイアグラム
o スルー フォーカス スポット ダイアグラム
o 全視野スポット ダイアグラム
o マトリックス スポット ダイアグラム
o コンフィグレーション マトリックス スポット ダイアグラム
o 光路差図
o 瞳収差図
o グリッドのディストーション
o ザイデル係数
o ザイデル ダイアグラム
o ゼルニケ フリンジ係数
o ゼルニケ標準係数
o ゼルニケ環状係数
o 視野に対するゼルニケ係数

• その他の解析では、いずれも ModifySettings メソッドで設定を定義し、GetTextFile メソッドで結果を取得できます。

ツール
• 以下の各ツールがサポートされています (括弧内にツールの場所を示してあります)。
o 全ての面にコーティングを追加 (レンズ データ エディタ)
o グローバルからローカル座標へ変換 (レンズ データ エディタ)
o ローカルからグローバル座標へ変換 (レンズ データ エディタ)
o 半径を円形アパチャーに変換 (レンズ データ エディタ)
o 半径を浮動アパチャーに変換 (レンズ データ エディタ)
o 半径を最大アパチャーに変換 (レンズ データ エディタ)
o 全てのアパチャーを削除 (レンズ データ エディタ)
o ビネッティングをアパチャーで置換 (レンズ データ エディタ)
o オブジェクトを再読み込み (ノンシーケンシャル コンポーネント エディタ)
o 全てのオブジェクトを再読み込み (ノンシーケンシャル コンポーネント エディタ)
o コンフィグレーションを削除 (マルチコンフィグレーション エディタ)
o コンフィグレーションを挿入 (マルチコンフィグレーション エディタ)
o 次のコンフィグレーション (マルチコンフィグレーション エディタ)
o 前のコンフィグレーション (マルチコンフィグレーション エディタ)
o ピックアップ付きコンフィグレーションの追加 (マルチコンフィグレーション エディタ)
o コンフィグレーションの単一化 (マルチコンフィグレーション エディタ)
o 評価関数の挿入 (メリット ファンクション エディタ)
o 評価関数の読み込み (メリット ファンクション エディタ)
o 評価関数の保存 (メリット ファンクション エディタ)
o 全てのオペランドを削除 (メリット ファンクション エディタ)
o アーカイブを作製 ([ファイル] (File) タブ)
o アーカイブの読み込み ([ファイル] (File) タブ)
o CAD ファイルのエクスポート ([ファイル] (File) タブ)
o ノンシーケンシャル光線追跡 ([解析] (Analysis) タブ→ノンシーケンシャル UI モード)
o LightningTrace ([解析] (Analysis) タブ→ノンシーケンシャル UI モード)
o 全ての変数を削除 ([最適化] (Optimize) タブ)
o 全ての曲率半径を変数に設定 ([最適化] (Optimize) タブ)
o 全ての厚みを変数に設定 ([最適化] (Optimize) タブ)
o クイック調整 ([最適化] (Optimize) タブ)
o クイック フォーカス ([最適化] (Optimize) タブ)
o ローカル最適化 ([最適化] (Optimize) タブ)
o ハンマー最適化 ([最適化] (Optimize) タブ)
o グローバル最適化 ([最適化] (Optimize) タブ)
o カスタム光線の光線追跡 (UI からは直接実行できません。従来は DDE でサポートされていたツールです)
• DDE データ項目は、以下を除いてすべて ZOS-API.NET によってサポートされています。
o CloseUDOData
o ReleaseWindow
o SetUDOData
o ExportCheck
o GetAddress
o GetAspect
o GetMetaFile
o GetRefresh
o GetSequence
o GetSettingsData
o GetUDOSystem
o PushLens
o PushLensPermission
o SetSettingsData
o WindowMaximize
o WindowMinimize
o WindowRestore

最後に、現在のところ、API では元に戻す/やり直しの機能がサポートされていません。また、[プロジェクト環境設定] (Project Preferences) ダイアログで値を取得する機能と変更する機能もサポートされていません。


ZOS-API アプリケーションをビルドするための各種ツール

新しい API を使用したアプリケーション作成に着手するときの開始点として、数々のテンプレートが用意されています。これらのテンプレートは、OpticStudio の [プログラミング] (Programming) タブにある [ZOS-API アプリケーション ビルダ] (ZOS-API Application Builders) から利用できます。



C#、C++、MATLAB、Python によるアプリケーションのプログラミング向けのテンプレートが用意されています。C# と C++ については、すべての通信モードで使用できるテンプレートが用意されています。

http://forum.zemax.com/Uploads/Images/deca831f-278a-481f-9de4-c2db.jpg

MATLAB と Python については、スタンドアロン モード アプリケーション向けのテンプレート、およびインタラクティブ拡張機能が用意されています。

http://forum.zemax.com/Uploads/Images/6337c801-50eb-40e7-8979-8326.jpg

ZOS-API.NET でビルドしたアプリケーションを Visual Studio Express でコンパイルする場合、Windows Desktop エディションまたは Community エディションを使用する必要があります。他のバージョンの Visual Studio Express には、ここで取り上げている API との互換性がありません。


まとめ

ZOS-API.NET は、OpticStudio との通信や OpticStudio のカスタマイズのための高機能な手段を提供します。この API を使用することで、COM (C++) または .NET (C#) のコードによるアプリケーションを作成できます。この API を使用することで、開いている OpticStudio のインスタンスとアプリケーションが直接通信できるほか、OpticStudio をバックグラウンド プロセスとしてアプリケーションから実行することもできます。この API には多数の機能があり、今後の OpticStudio のリリースに合わせて、継続的に増強される予定です。

GO


Similar Topics


Login
Existing Account
Email Address:


Password:


Select a Forum....



































Zemax Users Forum


Search