zemax编程语言应用指南:ZOS-API、ZPL和DLL之间的区别
本文对ZOS-API、ZPL和DLL进行了比较。我们将会对与OpticStudio的互联、代码执行、语句和数据存取与处理这些方面进行解释说明。作者 Haosheng Hu概述在OpticStudio中,用户可以通过编程(Programming)选项卡访问OpticStudio的编程功能,如Zemax编程语言(ZPL)、应用程序编程接口(ZOS-API)和动态链接库(DLL)。每种编程方法都有其独特的特点。本文描述了这三种编程功能的特点和区别。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的信息,可查看文章Zemax编程语言(ZPL)简介不同之处以下为ZOS-API与ZPL之间最基本的差别。ZPL宏是一个文本文件。可以在OpticStudio内的ZPL编辑器中创建和编辑ZPL宏。ZPL宏很容易学习,不需要任何编程经验,并且在其中提供了能够执行一系列命令的强大工具。下面的截图显示了ZPL编辑器中的ZPL宏。ZOS-API应用程序是用可以访问API库的编程语言编写的。ZOS-API支持四种编程语言:MATLAB、Python、C++和C#。下方截图显示了用于连接至ZOS-API的Matlab代码。 ZPL宏在OpticStudio图形用户界面(GUI)中运行。要执行或编辑ZPL宏,请单击:编程(Programming)> ZPL宏(ZPL Macros)>编辑/执行(Edit/Run)。ZOS-API应用程序的执行取决于使用的模式:独立应用程序(A Standalone Application) 模式是一个外部可执行文件(.exe),它将启动一个全新的OpticStudio实例作为背景程序。在这种模式下,OpticStudio作为服务器运行,没有用户界面。必须小心确保运行实例数量没有达到OpticStudio许可运行的最大数量。 自定义扩展(User Extension)或自定义分析(User Analysis) 模式是从OpticStudio 内置的GUI中启动的,可构建类似于扩展程序的应用程序。它们可以通过编程(Programming)>ZOS-API.NET接口(ZOS-API.NET Applications)> 自定义分析/扩展(User Analyses/Extensions)来访问的。 交互扩展(Interactive Extension)从编程(Programming)>ZOS-API.NET接口(ZOS-API.NET Applications)>交互扩展(Interactive Extension)打开。它可以将外部的ZOS-API应用程序连接到OpticStudio的现有实例。
ZPL是一种可编译的“宏”或“脚本”语言,类似于带有光线追迹函数BASIC编程语言。所有ZOS-API程序和扩展都是用C#、C++、MATLAB或Python等外部编程语言编写的。ZPL宏由存储在文本文件中的一系列命令组成。这些命令可以给变量(数值或字符串)赋值、使用关键字调用函数或进行注释。在ZPL中,所有数据存取和处理都基于已定义的命令。ZPL作为解译型代码,在运行复杂计算时,它可能比完全编译的代码慢。在ZOS-API中,数据存取和数据处理更加灵活和强大。ZOS-API可以利用其它高级编程语言(如MATLAB)的数值分析和矩阵计算能力。ZPL不能通过ZOS-API调用,反之亦然。ZOS-APIZPL接口取决于所选的编程语言OpticStudio内置代码执行非常灵活(可以是可执行文件,可以从编程语言运行,也可以嵌入到OpticStudio中)OpticStudio内置语法取决于所选的编程语言非常基础;易于学习数据存取和处理灵活而强大的数据存取和处理可以利用其他编程语言的数值分析和矩阵计算能力(如使用MATLAB的ZOS-API)解译型语言进行复杂计算时,比完全编译的代码更慢ZOS-API 和DLL的区别什么是DLL?动态链接库(Dynamic Link Library,DLL)是一个共享库。它是一个Windows程序,但不能像EXE程序那样直接运行。它可以被另一个程序调用,即我们的OpticStudio。DLL根据需要调用,并在完成时关闭。只在需要时使用DLL,使得内存管理方面更高效。在OpticStudio中,发送到DLL的数据是指定且有一定限制的。存在不同类型的DLL,如用户自定义表面、用户自定义散射配置文件等。对于每种类型的DLL,可以在文件夹{Zemax}/DLL下的示例DLL源代码中找到数据结构。有关DLL的更多信息,请查看文章如何编译用户自定义DLL。不同之处ZOS-API和DLL之间最根本的区别是客户端-服务器角色是相反的。ZOS-API脚本是一个客户端,它调用OpticStudio作为服务器来执行任务。ZOS-API脚本可以访问OpticStudio接口,并且OpticStudio内几乎所有方面的功能都可以通过ZOS-API脚本访问和运行。API脚本还包含其他功能,比如批量处理光线追迹(Batch Ray Trace)等。 DLL充当服务器。OpticStudio客户端将指定数据发送给DLL或从DLL获取指定数据,并最终将这些数据返回至OpticStudio中。因此,OpticStudio仅负责数据交换,由此限制了DLL的操作范围。
|
关键词:
光学 光学设计 ZEMAX