在人均“四则运算用不到除”的眼视光学领域,如果你会使用Zemax,就好像掌握了一把光剑,有相当多的问题可以迎刃而解。在剩下的四则运算会用除法的这些人里,大多数还是在用笔和纸手推公式,如果你能用上Python控制Zemax,则好像掌握了原力,能够使用原力御剑。
接下来,我将为你讲解如何使用原力御光剑,先做些准备活动。本文假设你已经正确安装了Zemax。
安装 miniconda
首先,从安装Python和必须的包管理程序开始。
Python的包非常混乱,经常互相冲突,所以一定不要擅自在系统中直接安装Python和相应的包。平时,能够使用云端的情况下尽量使用云端编程环境,例如Google Colab,DeepNote,Noteable,Replit等等。但与Zemax联合编程,需要与本地的Zemax交互,所以不得不在本地(而且是Windows)安装Python,这时候需要借助包管理程序。我比较习惯的是使用Anaconda,Anaconda有两个版本,其中比较节省空间的是miniconda。
以下是在Windows系统上安装Miniconda并创建一个名为"z"的环境的步骤:
-
下载Miniconda安装程序
首先,你需要从Miniconda的官方网站下载适合你的操作系统的Miniconda安装程序。你可以在这个链接找到它:https://docs.conda.io/en/latest/miniconda.html
-
运行Miniconda安装程序
下载完成后,双击运行安装程序。在安装过程中,你可以选择“为我安装”或“为所有用户安装”。如果你不确定,可以选择“为我安装”。
-
安装过程中的设置
在安装过程中,你会看到一个选项“将Anaconda添加到我的PATH环境变量中”。虽然安装程序建议你不要勾选这个选项,但是为了方便,你可以选择勾选它。这样你就可以在命令行中直接运行conda命令。
-
完成安装
安装程序会自动完成剩下的步骤。安装完成后,你可以打开命令提示符(或者PowerShell),然后输入
conda --version
来检查Miniconda是否已经成功安装。 -
创建名为"z"的环境
在命令提示符中,输入以下命令来创建一个新的环境,名为"z":
conda create --name z
然后按回车键。conda会询问你是否要继续,输入
y
然后按回车键。 -
激活环境
创建环境后,你需要激活它。在命令提示符中,输入以下命令:
conda activate z
现在你已经在"z"环境中了,你可以在这个环境中安装和使用Python包。
安装必要的包
Zemax与Python的通讯是使用的ZOS API,而ZOS API是建立在微软.net的基础之上,因此在Python中控制Zemax需要安装与.net相关的包,这里是pythonnet。为了后续教学方便,我们还会安装jupyter和numpy,
以下是在已经创建的名为 "z" 的conda环境中安装pythonnet,jupyter和numpy的步骤:
-
首先,打开Windows Powershell。
-
激活你的conda环境。输入以下命令并按回车键:
conda activate z
如果成功,你应该会在命令行提示符前看到环境名称 "(z)"。
-
接下来,我们将安装pythonnet。由于pythonnet可能需要一些预编译的依赖项,我们将使用conda-forge通道来安装。输入以下命令并按回车键:
conda install -c conda-forge pythonnet
如果提示你确认安装,输入 "y" 并按回车键。
-
然后,我们将安装jupyter。输入以下命令并按回车键:
conda install jupyter
同样,如果提示你确认安装,输入 "y" 并按回车键。
-
最后,我们将安装numpy。输入以下命令并按回车键:
conda install numpy
如果提示你确认安装,输入 "y" 并按回车键。
现在,你的conda环境 "z" 应该已经安装了pythonnet,jupyter和numpy。你可以通过在Powershell中输入 "python" 启动Python解释器,然后输入 "import clr","import jupyter" 和 "import numpy" 来测试这些库是否已经成功安装。如果没有错误消息,那么你就成功了!
ZOS-API
Zemax并没有直接提供一个zosapi的库,而是每次从头开始用pythonnet建立一个相关的类,然后调用。这就还挺麻烦的。不过他们已经写好了很多示例代码,而每一个示例代码前面都是相同的建立类部分,所以,我们只需要提取出来即可。
在你的~\Documents\Zemax\ZOS-API Sample Code\Python目录下,应该可以看到一组类似这样命名的文件:
- PythonStandalone_01_new_file_and_quickfocus.py
- PythonStandalone_02_NSC_ray_trace.py
……
随便取其中的一个,复制到你准备工作的目录下,然后改名为zosapi.py就可以了。比如我们可以建立一个工作目录叫做learn_zemax_python,把PythonStandalone_01_new_file_and_quickfocus.py文件复制到该目录下,然后重命名为zosapi.py
本地vscode
个人推荐使用vscode https://code.visualstudio.com/ 这是一个微软推出的强大编辑器,有大量插件能够继续增强能力。特别是copilot,能够一定程度上自动编程。
vscode下载安装即可,没有什么特殊。然后在“扩展”中,找到如下安装
- python (by microsoft)
- pylance (by microsoft)
- jupyter (by microsoft)
可选
- GitHub Copilot (by GitHub):这是一个AI辅助编程的插件,免费一个月然后要付费使用。当然现在也有更多其他的AI辅助编程工具可用,例如cursor
- Markdown Preview Enhanced (by Yiyi Wang):这是我常用来写markdown文档的插件