ZEMAX-ZPL宏批量导入优化函数操作函数及目标值


文章目录

  • 前言
  • 一、ZPL宏的编写
  • 二、批量设置优化函数操作数


前言

随着ZEMAX的学习深入,我发现有些操作纯手动非常麻烦,这里就要借用ZEMAX自带的ZPL宏来帮助了,本人也是ZPL宏学习的入门者,在此记录我的ZPL宏的学习过程。


一、ZPL宏的编写

  • 个人一般是将ZEMAX自带的宏另存为另一个文件,然后在新保存的文件中进行修改,这样保存的文件直接在对应路径里。
    ZEMAX-ZPL宏批量导入优化函数操作函数及目标值_第1张图片
  • 在工具栏中找到“编程”,打开“编辑/执行”。
    ZEMAX-ZPL宏批量导入优化函数操作函数及目标值_第2张图片
  • 这里点击“编辑”,就会弹出来ZPL宏的编辑页面,然后就可以在其中进行改写了。
  • 注意,改写之后要点击保存,以及工具栏中的“更新列表”,然后再点击“编辑/执行”中的“执行”,要不然执行的ZPL宏可能是没有更新过的。

二、批量设置优化函数操作数

  • 在光学系统优化过程中,我们可能会针对很多采样点的数据进行操作,如果手动输入优化函数操作数,这将是一个不小的工作量。

以下为参考代码

sample = 400   #采样点数
FOR I,1,sample,1  #循环采样
  INSERTMFO I       #插入评价函数
  SETOPERAND I,11,"REAY"  #设置操作数为REAY
  SETOPERAND I,9,1        #设置操作数权重为1
      norm_pupil_coord=I/sample  #归一化瞳面坐标
  Y=I/sample*1   #物面实际坐标,如果入瞳半径为1
  S=I/sample*2  #y方向像面坐标计算,如果出瞳半径为2,这里完全可以自己设置,看你的需求
  SETOPERAND I,8,S    #设置操作数目标值
  SETOPERAND I,7,norm_pupil_coord #设置归一化瞳面坐标
  SETOPERAND I,2,NSUR()    #像面采集光线坐标,NSUR可以替换成你想得到信息的那个面,比如第二面:I,2,2
NEXT
  • 这里我是使用REAY操作数获取并约束目标面上光线的落点位置,你也可以使用其他优化函数操作数,比如控制出射角度的RANG等来达到你的目标,逻辑都是类似的。

  • 另外,相关信息都在代码中的备注里,可以参考,对于其他功能,也可以自己翻阅操作手册学习ZPL宏的关键词。

  • INSERTMFO可以在优化的评价函数中插入一个新的优化函数操作数。

  • SETOPERAND row, col, value可以将优化评价函数编辑器中的第row行第col列设置为value值。

你可能感兴趣的:(ZEMAX学习,笔记,经验分享,其他,科技,学习)