什么是ZPL宏?

概述

這篇文章介紹了什么是ZPL宏 (Zemax Programming Language),ZPL可以用來實(shí)現(xiàn)什么功能以及ZPL中函數(shù) (Functions) 與關(guān)鍵詞 (Keywords) 的區(qū)別。

ZPL宏簡介

Zemax編程語言 (ZPL) 允許用戶在OpticStudio中編寫自己的程序。這些程序可以實(shí)現(xiàn):

? 自動重復(fù)鍵盤和鼠標(biāo)的操作

? 基于OpticStudio的數(shù)據(jù)進(jìn)行計算

? 以圖表或表格的形式生成數(shù)據(jù)

? 還有很多很多其它的功能……:)

創(chuàng)建一個ZPL宏程序是非常簡單的。我們的目標(biāo)是為光學(xué)工程師提供一個可以快速上手的簡單易用的編程工具,即便光學(xué)工程師可能并沒有太多的編程經(jīng)驗(yàn)。 (OpticStudio還支持進(jìn)行擴(kuò)展編程,這是一個API級別的接口,它可以允許外部程序調(diào)用OpticStudio的分析工具,例如使用Matlab。)

需要注意的是:這篇文章無法代替用戶手冊中關(guān)于Zemax Programming Language章節(jié)的要點(diǎn)。如果您剛開始接觸ZPL,我們強(qiáng)烈建議您閱讀用戶手冊中的“About the ZPL”一章。

ZPL包含五個基本概念:變量 (variables)、運(yùn)算符 (operations)、函數(shù) (functions)、關(guān)鍵詞 (keywords) 和備注 (comments)。 變量可以是數(shù)值 (numeric) 或字符串 (string),并且您可以定義矩陣變量。例如,下面這段代碼相當(dāng)于ZPL宏中經(jīng)典的“hello world”:

變量a分配的數(shù)值為1,變量b分配的數(shù)值為2,我們使用運(yùn)算符“+”將這兩個變量加在一起。ZPL支持所有的數(shù)學(xué)、字符串和邏輯運(yùn)算。 函數(shù)用來調(diào)取在OpticStudio中已編譯好的算法,它用來返回一個特定的數(shù)值。例如:

它將調(diào)用已經(jīng)編譯好的光線耦合效率算法,并將計算結(jié)果儲存在變量coupling中。FICL()所調(diào)用的算法和您在OpticStudio用戶界面中的分析 (Analysis) 選項(xiàng)卡/光線耦合 (Fiber Coupling)/單模光纖耦合 (Single Mode Coupling) 工具調(diào)用的算法是相同的。 并且函數(shù)的執(zhí)行速度和OpticStudio內(nèi)置函數(shù)的速度相同,因?yàn)閆PL函數(shù)調(diào)用的就是OpticStudio的內(nèi)置函數(shù)本身。OpticStudio支持非常多種函數(shù)種類,并且任意一個優(yōu)化操作數(shù)都可以在ZPL中直接調(diào)用。

關(guān)鍵詞是已經(jīng)編譯好的例程,它可以用來執(zhí)行程序循環(huán),或用來執(zhí)行一些重要的任務(wù),例如運(yùn)行光線追跡或調(diào)整透鏡參數(shù)等。例如,如果想要告訴OpticStudio對透鏡文件進(jìn)行10圈優(yōu)化,您可以使用如下關(guān)鍵詞:

同樣的,執(zhí)行這段ZPL宏和您在執(zhí)行優(yōu)化時點(diǎn)擊10圈優(yōu)化的效果是相同的。關(guān)鍵詞可以執(zhí)行OpticStudio中很多類型的計算,例如光線追跡和物理光學(xué)計算等,同樣關(guān)鍵詞也可以用來執(zhí)行例如FOR…NEXT和IF…THEN…ELSE…ENDIF這類循環(huán)和條件判斷語句。
最后,您可以使用備注來標(biāo)注ZPL宏是如何工作的。任何以“!”為起始的行或任何“#”后輸入的字符都將作為備注,這些內(nèi)容將在執(zhí)行ZPL宏時被忽略。
ZPL類似于一個腳本將這幾個組成部分包在一起。作為演示,想像您需要優(yōu)化一個鏡頭,計算鏡頭的優(yōu)化函數(shù)值,并將該值乘以5的對數(shù)。則相應(yīng)的ZPL即如下所示:

您可以查閱用戶手冊的相關(guān)章節(jié)獲取每個函數(shù)和關(guān)鍵詞的語法和詳細(xì)信息。你需要清楚的是這些都是已經(jīng)編譯好的函數(shù)。 每一次ZPL函數(shù)調(diào)用一個函數(shù)或關(guān)鍵詞時,它都在調(diào)用一個已經(jīng)編譯好的指令。ZPL調(diào)用的函數(shù)和您在軟件用戶界面中點(diǎn)擊相同功能的分析工具所調(diào)用的函數(shù)是相同的, 并且ZPL調(diào)用函數(shù)進(jìn)行計算不會產(chǎn)生額外的分析時間。
執(zhí)行ZPL宏的速度非常快,并且ZPL是非常容易學(xué)習(xí)和使用的語言。我們將發(fā)布更多技術(shù)文章帶您了解Zemax編程語言的強(qiáng)大之處。