在OpticStudio中,“编程”选项卡使得用户可以访问OpticStudio的编程功能,例如Zemax编程语言(ZPL),应用程序编程接口(ZOS-API)和动态链接库(DLL)。
每种编程方法都有其独特的特色。本文介绍了这三种编程功能的特征和差异。
1
ZOS-API和ZPL之间的区别
ZOS-API和ZPL在许多方面有所不同,包括它们的语法,应用程序和运行时环境。以下各节将概述这两种编程方法,并详细描述这些差异。
2
什么是ZOS-API?
ZOS-API是为OpticStudio开发的应用程序编程接口,可用于连接和自定义应用程序。
尽管ZOS-API依赖于COM接口,但它植根于.NET库,因此可以使用任何可以访问API库的编程语言(例如C++,C#,Python,MATLAB)来完成API的编程。
ZOS-API允许应用程序与打开的OpticStudio实例直接通信或将OpticStudio作为后台进程运行。
3
什么是ZPL?
Zemax编程语言(ZPL)是一种宏语言,允许用户直接在OpticStudio中编写自己的程序。
ZPL可以:
A.自动执行重复的键盘和鼠标操作
B.根据OpticStudio数据执行计算
C.以特定格式导出数据
D.生成数据的图形和文本列表
差异性:
ZOS-API和ZPL之间有一些基本区别。
界面:
ZPL宏是一个文本文件。可以在OpticStudio内的ZPL编辑器中创建和编辑它。ZPL宏不需要任何编程经验。
它们易于学习,并提供了执行一系列命令的强大工具。以下屏幕快照显示了ZPL编辑器中的ZPL宏。
ZOS-API应用程序是以可以访问API库的编程语言编写的。
ZOS-API积极支持四种编程语言:MATLAB,Python,C++和C#。
以下屏幕截图显示了连接到ZOS-API的Matlab代码。
代码执行:
ZPL宏在OpticStudio图形用户界面(GUI)中运行。
要执行或编辑ZPL宏,请单击“编程...ZPL宏...编辑/运行”。
对于ZOS-API应用程序,执行取决于所使用的模式:
独立应用程序是一个外部可执行文件(.exe),它将启动OpticStudio的新实例作为后台进程。
在这种模式下,OpticStudio作为服务运行,没有用户界面。必须注意确保未达到OpticStudio实例的最大数量。
用户扩展或用户分析是从OpticStudioGUI中启动的,其行为分别类似于内置工具或分析功能。
可通过编程...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)的数值分析和矩阵计算功能。
互通性:
无法通过ZOS-API调用ZPL,反之亦然。
比较表:
4
ZOS-API和DLL之间的区别
什么是DLL?
动态链接库(DLL)是共享库。它是Windows程序,但不能像EXE程序一样直接运行。相反,它是由另一个程序OpticStudio调用的。
根据需要调用DLL,并在完成后将其关闭。由于仅在需要时才使用DLL,因此使DLL在内存方面效率更高。在OpticStudio中,指定并限制了发送到DLL的数据。
DLL的类型不同,例如用户定义的表面,用户定义的散布轮廓等。对于每种类型的DLL,可以在示例DLL的源代码中的{Zemax}/DLL下找到数据结构。
差异性
ZOS-API和DLL之间最一般的区别是客户端-服务器角色是相反的。
ZOS-API脚本是一个客户端,该客户端调用OpticStudio作为服务器来执行任务。ZOS-API脚本可以访问OpticStudio界面。
ZOS-API脚本可以访问和运行OpticStudio功能的几乎所有方面。API脚本还包含其他功能,例如批处理射线跟踪。
DLL充当服务器。
OpticStudio客户端从DLL发送和请求特定数据,然后将其返回给OpticStudio。OpticStudio负责数据交换。它限制了DLL的操作范围。
ZOS-API,ZPL宏和DLL都提供了与OpticStudio通信和/或自定义OpticStudio的强大方法。
ZPL不需要任何编程经验,并且可以自动化软件中的任务。ZOS-API可以与可以访问API库的任何编程语言一起使用。
它提供对几乎所有OpticStudio功能的访问,并可以利用其它高级编程语言的数值分析和矩阵计算功能。
DLL用于创建许多类型的用户定义实体:表面,对象,散射轮廓等。