关注公众号

关注公众号

手机扫码查看

手机查看

技术帖 | 使用ZOS-API交互扩展连接Python与OpticStudio

光谱时代仪器选型中心
2021.3.04

da38592e941207723587765d8601e8c5.png

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。

使用Python通过交互扩展 ( Interactive Extension ) 连接到ZOS-API。一旦连接到OpticStudio,交互扩展就可以执行自定义扩展能够执行的任何任务,并且OpticStudio界面将交互式地显示该任务的结果。

本文演示了如何使用 Python 的原生 IDE 和 PyCharm 连接到 ZOS-API 交互扩展。

交互扩展模式几乎与自定义扩展 ( User Extension ) 相同,除了交互扩展不必是独立的可执行文件。交互扩展可以从脚本环境(如:Matlab或Python)进行连接,在这些脚本环境中没有可使OpticStudio启动的已编译可执行文件。

交互扩展从外部脚本环境交互地控制OpticStudio界面。本文将解释如何将OpticStudio与交互扩展连接起来。

创建交互扩展脚本

要创建连接到交互扩展的编程模板,请单击:编程 ( Programming ) > Python >交互扩展( Interactive Extension )。

bffa83b78184545d40921121d61aa1c5.jpeg


将该脚本放置在ZOS-API项目文件夹:  ..\\Documents\\Zemax\\ZOS-API Projects\\PythonZOSConnection 中。

如果创建了多个交互扩展,那么文件名将按顺序编号。


软件将在文件所在位置打开文件选项 ( File Explorer ):


ccec237c1241144243bac32c80247562.jpeg


连接到交互扩展

要启动交互扩展,请单击“编程 ( Programming ) >交互扩展 ( Interactive Extension )”。


f66c9bfe1ed229d53cb0ecb465605966.jpeg


将打开对话框窗口,OpticStudio将等待外部应用程序(在本例中是Python)连接。

4289ab09d5d32b08e8f2b7453aa98f3e.jpeg


对话框显示OpticStudio运行实例的实例ID,Python在运行多个实例时可以连接到OpticStudio的特定实例。

下一步取决于所使用的集成开发环境 (Integrated Development Environment ,IDE )。

IDLE (Python自带的原生IDE)

右键单击脚本文件

选择“在集成开发环境编辑器中编辑 ( Edit in the IDLE )”、“使用集成开发环境编辑器编辑 ( Edit with IDLE )”Python版本

bd2a47b9c8c5d3aca0224c90ed7fce58.jpeg


运行代码

e7ccb5b4046e6dd3e745b08ca703ca80.jpeg


交互扩展的状态显示扩展已连接。


92eb5777e8cb9e22395591329fc7e7dc.jpeg


现在可以在 Python 命令窗口中执行单个命令。例如,可以加载示例文件:


a30bc97ada1ffaf09227fc50d899512b.jpeg


OpticStudio 打开的实例将显示加载的文件,Python命令窗口将在文件成功加载时返回布尔值“True”。


64fd1a4494b1caa11c1bd58c687272d9.jpeg


fc06b4d7809103751f357ab2c37f9a29.jpeg


一旦执行命令,shell中显示 “>>>” 意味着它已经为处理新的命令做好了准备。

PyCharm IDE:在 PyCharm 中打开 PythonZOSConnectionX.py 的代码。

点击右键选择“在控制台运行文件 ( Run File in Console )”:

b76feb4c5bb54bb793471b12eff0bc2c.jpeg


控制台窗口将指示连接的状态,然后在控制台中执行各个命令。


28712f4d32202557151a587cd0a3db9a.jpeg


右侧窗格显示项目可用的变量。

这意味着在使用交互扩展时存在“语法提示 ( Intellisense )”。

c16d680b95cd5ee0930da3e204c6e458.jpeg


Python也可以执行代码块。例如,打开附件,附件中的脚本摘录自示例文件:" \\Zemax\\ZOS-API Sample Code\\Python\\PythonStandalone_01_new_file_and_quickfocus.py "。连接到ZOS-API的代码行已被删除。

选择脚本。点击右键并选择“在控制台执行所选代码 ( Execute Selection in Console )”。

78821594dd5b63c361d47b7b32313d9b.jpeg


OpticStudio 显示新创建的文件。


b74029730b0bfd80a6e827861855868a.jpeg


控制台显示新的变量:

ac9763e1a93130d08429433169f034cb.jpeg


终止连接

可以通过单击“交互扩展”对话框中的“终止 ( Terminate )”来终止连接。

756639eb32edc6d4dfd6b6664262554f.jpeg


或者在Python命令窗口中运行CloseApplication方法。


917b3af46a552742f56793ca8afc040d.jpeg


其他详情,请垂询光谱时代工程师。


e807c2de52c5fd4b6a64ac2a5ab3ae99.png




推荐
关闭