ZEMAX | ZOS-API、ZPL 和 DLL 之間的區(qū)別

本文對(duì) ZOS-API、ZPL 和DLL 進(jìn)行了比較。我們將會(huì)對(duì)與 OpticStudio 的互聯(lián)、代碼執(zhí)行、語句和數(shù)據(jù)存取與處理這些方面進(jìn)行解釋說明。



概述


在 OpticStudio 中,用戶可以通過編程(Programming) 選項(xiàng)卡訪問 OpticStudio 的編程功能,如 Zemax編程語言( ZPL )、應(yīng)用程序編程接口( ZOS-API )和動(dòng)態(tài)鏈接庫 ( DLL )。每種編程方法都有其獨(dú)特的特點(diǎn)。本文描述了這三種編程功能的特點(diǎn)和區(qū)別。


ZOS-API 和 ZPL之間的區(qū)別


ZOS-API 和 ZPL 在許多方面都有所不同,包括它們的語句、應(yīng)用程序和運(yùn)行環(huán)境。以下部分將提供這兩種編程方法的概述,并詳細(xì)描述這些差異。


什么是 ZOS-API?



ZOS-API 是一個(gè)應(yīng)用程序接口,它是為使 OpticStudio 能夠支持與其它應(yīng)用程序的連接和自定義而開發(fā)的。雖然 ZOS-API 依賴于 COM 接口,但它來源于.NET庫,因此可以使用任何能夠訪問API庫的編程語言(如C++、C#、Python、MATLAB) 進(jìn)行 API 編程。ZOS-AP I允許應(yīng)用程序與 OpticStudio 中打開的實(shí)例直接交互,或者將 OpticStudio 作為背景程序運(yùn)行。


什么是 ZPL?



Zemax 編程語言( ZPL )是一種宏語言,它允許用戶在 OpticStudio 中直接編寫自己的程序。ZPL 可以:


· 自動(dòng)地重復(fù)鍵盤和鼠標(biāo)操作

· 基于 OpticStudio 數(shù)據(jù)執(zhí)行計(jì)算

· 以特定格式導(dǎo)出數(shù)據(jù)


不同之處


以下為 ZOS-API 與 ZPL 之間最基本的差別。


1、接口

ZPL 宏是一個(gè)文本文件??梢栽?OpticStudio 內(nèi)的 ZPL 編輯器中創(chuàng)建和編輯ZPL 宏。ZPL 宏很容易學(xué)習(xí),不需要任何編程經(jīng)驗(yàn),并且在其中提供了能夠執(zhí)行一系列命令的強(qiáng)大工具。下面的截圖顯示了 ZPL 編輯器中的 ZPL 宏。



ZOS-API 應(yīng)用程序是用可以訪問 API 庫的編程語言編寫的。ZOS-API 支持四種編程語言:MATLAB、Python、C++ 和 C#。下方截圖顯示了用于連接至 ZOS-API的 Matlab 代碼。


2、代碼執(zhí)行

ZPL 宏在 OpticStudio 圖形用戶界面( GUI )中運(yùn)行。要執(zhí)行或編輯 ZPL 宏,請(qǐng)單擊:編程( Programming )> ZPL 宏( ZPL Macros )>編輯/執(zhí)行 (Edit/Run)。


ZOS-API 應(yīng)用程序的執(zhí)行取決于使用的模式:


· 獨(dú)立應(yīng)用程序(A Standalone Application) 模式是一個(gè)外部可執(zhí)行文件(.exe),它將啟動(dòng)一個(gè)全新的 OpticStudio 實(shí)例作為背景程序。在這種模式下,OpticStudio 作為服務(wù)器運(yùn)行,沒有用戶界面。必須小心確保運(yùn)行實(shí)例數(shù)量沒有達(dá)到 OpticStudio 許可運(yùn)行的最大數(shù)量。

· 自定義擴(kuò)展(User Extension)或自定義分析( User Analysis) 模式是從OpticStudio 內(nèi)置的GUI中啟動(dòng)的,可構(gòu)建類似于擴(kuò)展程序的應(yīng)用程序。它們可以通過編程(Programming)> ZOS-API.NET接口( ZOS-API.NET Applications)> 自定義分析/擴(kuò)展 (User Analyses/Extensions)來訪問的。

· 交互擴(kuò)展 (Interactive Extension )從編程(Programming)>ZOS-API.NET 接口(ZOS-API.NET Applications)>交互擴(kuò)展(Interactive Extension)打開。它可以將外部的 ZOS-API 應(yīng)用程序連接到 OpticStudio的現(xiàn)有實(shí)例。


3、語法

ZPL 是一種可編譯的“宏”或“腳本”語言,類似于帶有光線追跡函數(shù)BASIC編程語言 。


所有 ZOS-API 程序和擴(kuò)展都是用 C#、C++、MATLAB 或 Python 等外部編程語言編寫的。

4、數(shù)據(jù)存取和處理

ZPL 宏由存儲(chǔ)在文本文件中的一系列命令組成。這些命令可以給變量(數(shù)值或字符串)賦值、使用關(guān)鍵字調(diào)用函數(shù)或進(jìn)行注釋。在 ZPL 中,所有數(shù)據(jù)存取和處理都基于已定義的命令。ZPL 作為解譯型代碼,在運(yùn)行復(fù)雜計(jì)算時(shí),它可能比完全編譯的代碼慢。


在 ZOS-API 中,數(shù)據(jù)存取和數(shù)據(jù)處理更加靈活和強(qiáng)大。ZOS-API 可以利用其它高級(jí)編程語言(如 MATLAB)的數(shù)值分析和矩陣計(jì)算能力。


5、互用性

ZPL 不能通過 ZOS-API 調(diào)用,反之亦然。


6、對(duì)比表格


ZOS-API 和 DLL 的區(qū)別


什么是 DLL?


動(dòng)態(tài)鏈接庫 (Dynamic Link Library,DLL) 是一個(gè)共享庫。它是一個(gè) Windows 程序,但不能像 EXE 程序那樣直接運(yùn)行。它可以被另一個(gè)程序調(diào)用,即我們的OpticStudio。DLL 根據(jù)需要調(diào)用,并在完成時(shí)關(guān)閉。只在需要時(shí)使用DLL,使得內(nèi)存管理方面更高效。在 OpticStudio 中,發(fā)送到 DLL 的數(shù)據(jù)是指定且有一定限制的。存在不同類型的 DLL,如用戶自定義表面、用戶自定義散射配置文件等。對(duì)于每種類型的 DLL,可以在文件夾 {Zemax } / DLL下的示例 DLL 源代碼中找到數(shù)據(jù)結(jié)構(gòu)。


不同之處


ZOS-API 和 DLL 之間最根本的區(qū)別是客戶端-服務(wù)器角色是相反的。


· ZOS-API 腳本是一個(gè)客戶端,它調(diào)用 OpticStudio 作為服務(wù)器來執(zhí)行任務(wù)。ZOS-API 腳本可以訪問 OpticStudio 接口,并且 OpticStudio 內(nèi)幾乎所有方面的功能都可以通過 ZOS-API 腳本訪問和運(yùn)行。API 腳本還包含其他功能,比如批量處理光線追跡 (Batch Ray Trace)等。


· DLL 充當(dāng)服務(wù)器。OpticStudio 客戶端將指定數(shù)據(jù)發(fā)送給 DLL 或從 DLL 獲取指定數(shù)據(jù),并最終將這些數(shù)據(jù)返回至 OpticStudio 中。因此,OpticStudio 僅負(fù)責(zé)數(shù)據(jù)交換,由此限制了 DLL 的操作范圍。