ZEMAX | 如何使用 ZPL 创建用户自定义求解

注我们!  每天掌握一些光学知识!

本文使用两个示例演示了如何使用 ZPL 创建用户自定义解。第一个示例介绍了如何创建 ZPL 解以确保序列文件中像面的曲率半径等于系统的 Petzval 曲率。第二个示例介绍了如何在非序列元件编辑器  ( Non-Sequential Component Editor ) 中基于其他物体的参数来约束的物体位置。【请联系我们领取文章的附件】

简介

求解 ( Solve )  是可以在诸如镜头数据编辑器非序列元件编辑器之类的编辑器中主动调整特定值的功能。例如,可以在曲率半径,圆锥系数或 TCE 上指定求解类型,并通过单击要放置的求解单元的求解框进行设置。尽管 OpticStudio 提供了许多默认的求解类型,但用户有可能希望自定义求解类型,这可以通过使用Zemax 编程语言( Zemax Programming Language ,ZPL)来实现。
ZPL 宏求解可用于任何编辑器中的几乎所有单元(曲率半径,厚度,参数,多重结构等)。可以像任何其他求解类型一样,通过在编辑器中单击参数单元格右侧的小框来设置 ZPL 宏求解。
ZPL 宏求解通过执行 ZPL 宏来确定解的值,并使用 SOLVERETURN 关键字将其返回给编辑器。一旦创建了用于求解的宏,并将其放置在 <Documents>\Zemax\Macros  目录中,即可在求解窗口的“宏:( Macro: )”中输入该宏的名称:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图1
请注意,在求解框中输入的宏名称不区分大小写,并且不需要其扩展名(.ZPL)。
为确保宏求解按照预期的方式工作,需要遵循一些规则,请参阅“技巧和陷阱”部分以获取更多信息。

Petzval 曲率求解示例

假设我们想要能够自动将像面的曲率半径设置为等于 Petzval 曲率的解。当然,在编写宏之前,请始终先检查一下仍不支持的解!
加载文件:
<Documents>\Zemax\Samples\Sequential\Objectives\Petzval.zmx 。
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图2
宏求解需要计算系统的 Petzval 曲率,然后将值返回给 OpticStudio。系统的 Petzval 曲率是通过 PETC 优化操作数获得的,也可以通过 OPEV()  和 OCOD()  函数直接在宏中调用:
  • OCOD() 提取与优化操作数类型相对应的唯一数字代码

  • OPEV() 计算操作数的值,以 OCOD() 提取的唯一代码作为第一个参数,然后是优化操作数的参数。

在本例中:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图3
请注意, SOLVERETURN 关键字用于将数据传递回编辑器。将该宏另存为 Macros 文件夹中的 PETC.zpl。曲率求解值必须以曲率  (1/R) 的形式返回,而不是曲率半径。所有其他求解直接返回值。
要应用宏,请在像面的曲率半径单元中选择求解框,然后选择 ZPL 宏求解类型,然后在单元格中键入宏名称:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图4
瞧!OpticStudio 自动更新求解,并在“求解类型 ( Solve Type )”框中放置“Z”,以指示其处于激活状态:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图5

物体位置求解示例

第二个示例,我们将要使一个非序列物体在另一个非序列物体的末端之后10 mm。为此,需要计算前一个物体的长度,并用它来定位第二个物体。
文章附件里的非序列文件中,第一个物体是矩形的复合抛物线聚光镜 (Compound Parabolic Concentrator,CPC ) 物体。将此物体的最大长度定义为非序列元件编辑器中的参数。如果可以保证该物体始终是最大长度,则可以简单地使用带有偏移量的拾取求解来定位物体2。但是,实际长度有可能小于最大长度参数,因此必须计算实际长度并使用此值。同样,由于这是 CPC 矩形 (Rectangular CPC) 物体,因此 x 和 y 截面的实际长度可能会有所不同:必须选择两者中较小的一个。这是宏求解中的理想问题!
CPC的长度“ L”由帮助文件:“设置 ( Setup ) 选项卡 > 编辑器 ( Editors ) 组 > 非序列元件编辑器 ( Non-Sequential Component Editor ) > 非序列几何物体 ( Non-Sequential Geometry Objects ) 复合抛物线聚光镜(Compound Parabolic Concentrator , CPC)”部分中的公式给出:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图6
因为这是 CPC 矩形 物体,所以有两个相关的长度值:X 和 Y,两个长度中较小的将被 OpticStudio 用作 CPC的长度,除非该长度大于“长度 ( Length )”参数。本例中的长度是“长度”参数的值。因此,宏应使用上面的公式计算 CPC 物体的 X 和 Y 长度,选择两个值中较小的,添加10 mm偏移,并将该值返回给矩形物体的 Z 位置 ( Z Position )参数。如果 X 和 Y 之间的较小长度仍大于“长度”参数值,则宏应在“长度”参数值上添加10 mm偏移,然后返回该值。
可以在文章附件中找到执行上述操作的 REC_CPC.ZPL 宏: 【请联系我们领取文章的附件】
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图7
如前所述,关键字 SOLVERETURN 用于将所需值传递回 NSCE。将宏放置在 <Documents>\Zemax\Macros  文件夹后,在主菜单中单击:宏 ( Macros ) > 更新宏列表 ( Refresh Macro List )。
在物体2(矩形)的参数 “Z 位置”的求解框中,选择“ ZPL 宏”,然后键入宏名称:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图8
就像前面的示例一样,NSCE 将在参数旁边显示 “ Z”,表明已在该参数上设置了 ZPL 解:
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图9
请注意,如果使用 Ctrl-A 在文件中定义的2个组态之间切换会发生什么。CPC 矩形物体的 Y 角(度)参数在20到40度之间更改,因此物体的长度也会更改。发生这种情况时,应用于物体2的 “Z 位置” ZPL 求解将自动更改,以根据对应操作将此物体始终放置在 CPC 物体末端的10毫米后。
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图10

技巧和陷阱

宏求解非常普遍,几乎可以使用任何计算来确定求解值。ZPL 支持的所有函数和关键字均可用。从宏菜单执行或作为求解执行的 ZPL 宏之间没有区别。但是,编写 ZPL 求解时应认真仔细:
  • 许多 ZPL 关键字和某些函数不应在宏求解中使用。例如,从求解中调用 UPDATE 会更新所有求解,这将再次调用宏,从而导致无限循环,会使其他关键字无法使用(例如:,在每次调用求解时都要求用户输入数据)。
  • 仅更新应用了求解的单元格。宏不应更新其他单元格或以其他方式修改系统(例如,不应优化)。

  • 宏求解永远不要依赖求解之后的编辑器中的数据,因为如果先调用解,然后再通过单独的后续解修改源数据,这也可能会产生错误的数据。

  • 仅当宏中的计算不是基于任何光线数据时,宏求解才可以放置在光阑面之前。有关更多信息,请参阅帮助文件的“编程 (Programming) 选项卡 > 关于ZPL ( About the ZPL ) >关键字 ( KEYWORDS ) > SOLVEBEFORESTOP” 部分。

  • 为了使求解更强且尽可能通用,建议在需要进行表面参考时使用 SURC()  和 SOSO()  函数:
    • SURC() 通过其(特殊的)注释字符串参考表面

    • SOSO() 获取要设置求解的表面/物体编号

  • 请记住,如果在镜头数据编辑器中的任何曲率半径单元上使用ZPL宏求解,则此参数的所有求解都将计算曲率 (1/R),而不是曲率半径(R)。这意味着应用于此参数的求解应返回曲率半径的倒数,而不是曲率半径本身。

  • 用户负责对宏返回的数据进行错误检查。例如,如果宏调用  RAYTRACE 来计算光线参数,则应使用  RAYE() 来确保没有发生任何错误(例如渐晕或全内反射)。如果发生错误,则宏应在未调用 SOLVERETURN 的情况下退出,以确保没有值返回到单元格。这在优化过程中尤其重要。以下代码给出了如何测试错误的示例。

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图11
  • 通常,宏求解应保持简短,简单,并避免冗长的计算。

  • 最后,请注意,OpticStudio 不会尝试限定或验证求解宏。此功能很强大,且具有灵活性,但必须谨慎使用。

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图12

· 扫码关注我们 ·

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图13

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图14


ZEMAX | 如何使用 ZPL 创建用户自定义求解的图15


ZEMAX | 如何使用 ZPL 创建用户自定义求解的图16


ZEMAX | 如何使用 ZPL 创建用户自定义求解的图17


ZEMAX | 如何使用 ZPL 创建用户自定义求解的图18


如果您对产品感兴趣,或需要技术支持,欢迎致电垂询!

电话:027-87878386

邮箱:market@ueotek.com


宇熠精选

关注武汉宇熠视频号 查看更多精彩视频 



推荐阅读

· ZEMAX | 内窥镜物镜系统初始结构的优化提升Ⅰ

· ZEMAX 内窥镜物镜系统初始结构的优化提升Ⅱ

· ZEMAX | 如何设计光谱仪 - 公差分析
· ZEMAX | 如何设计一个光谱仪 – 杂散光分析

· ZEMAX | 如何将仿真波导模式数据导入 OpticStudio

· ZEMAX | 探索 OpticStudio 中的物理光学传播

· ZEMAX | 如何在 OpticStudio 中建模一个投射式车灯

· ZEMAX | OpticStudio 如何模拟抬头显示(HUD)系统

· ZEMAX | 详解公差分析中的Root Sum Square (RSS)

· ZEMAX | 如何用 OpticStudio 设计共焦荧光显微镜

· ZEMAX | 如何模拟照明均匀的复眼透镜阵列

· ZEMAX | 如何在 SoildWorks 中显示光线

· ZEMAX | 如何在布局图中显示光瞳

· ZEMAX | 如何在 OpticStudio 中定义金属材料

· ZEMAX | 如何使用 Binary2 面型设计衍射光学元件

· ZEMAX | OpticStudio 建模衍射光学表面









武汉宇熠科技是 ZEMAX 中国区官方指定代理商,提供 ZEMAX 光学设计软件的培训、销售、技术支持、二次开发、解决方案及 ZEMAX 软件相关全方位定制服务。有关 ZEMAX ,您可以点击文末“阅读原文”了解更多信息,或致电垂询武汉宇熠工作人员:

销售热线:027-87878386

咨询邮箱:sales@ueotek.com




技术交流

光机解决方案

电话:027-87878386

邮箱:sales@ueotek.com

网址:www.ueotek.com

长按识别二维码关注

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图19

新闻咨询

Zemax 中国区代理

Solidworks 增值经销商

MCGrating 光栅设计软件

OOFELIE::Multiphysics 多物理场仿真分析软件

Optiwave 光通信设计软件

nPower 软件

ASLD 高级固体激光器设计及仿真软件

武汉宇熠科技有限公司

ZEMAX | 如何使用 ZPL 创建用户自定义求解的图20


ZEMAX | 如何使用 ZPL 创建用户自定义求解的图21
在看点这里
ZEMAX | 如何使用 ZPL 创建用户自定义求解的图22


👇点击阅读原文咨询产品或者技术支持。

(2条)
默认 最新
学习了
评论 点赞
学习了
评论 点赞
点赞 2 评论 2 收藏
关注