联系工作人员获取附件
本文使用两个示例演示了如何使用 ZPL 创建用户自定义解。第一个示例介绍了如何创建 ZPL 解以确保序列文件中像面的曲率半径等于系统的 Petzval 曲率。第二个示例介绍了如何在非序列元件编辑器? ( Non-Sequential Component Editor )?中基于其他物体的参数来约束的物体位置。
求解?( Solve )?是可以在诸如镜头数据编辑器或非序列元件编辑器之类的编辑器中主动调整特定值的功能。例如,可以在曲率半径,圆锥系数或 TCE 上指定求解类型,并通过单击要放置的求解单元的求解框进行设置。尽管 OpticStudio 提供了许多默认的求解类型,但用户有可能希望自定义求解类型,这可以通过使用Zemax 编程语言( Zemax Programming Language ,ZPL)来实现。
ZPL 宏求解可用于任何编辑器中的几乎所有单元(曲率半径,厚度,参数,多重结构等)。可以像任何其他求解类型一样,通过在编辑器中单击参数单元格右侧的小框来设置 ZPL 宏求解。
ZPL 宏求解通过执行 ZPL 宏来确定解的值,并使用 SOLVERETURN 关键字将其返回给编辑器。一旦创建了用于求解的宏,并将其放置在 <Documents>\Zemax\Macros ?目录中,即可在求解窗口的“宏:( Macro:?)”中输入该宏的名称:
请注意,在求解框中输入的宏名称不区分大小写,并且不需要其扩展名(.ZPL)。
为确保宏求解按照预期的方式工作,需要遵循一些规则,请参阅“技巧和陷阱”部分以获取更多信息。
假设我们想要能够自动将像面的曲率半径设置为等于 Petzval 曲率的解。当然,在编写宏之前,请始终先检查一下仍不支持的解!
加载文件:
<Documents>\Zemax\Samples\Sequential\Objectives\Petzval.zmx 。
宏求解需要计算系统的 Petzval 曲率,然后将值返回给 OpticStudio。系统的 Petzval 曲率是通过 PETC 优化操作数获得的,也可以通过 OPEV()?和 OCOD()?函数直接在宏中调用:
OCOD()?提取与优化操作数类型相对应的唯一数字代码
OPEV()?计算操作数的值,以 OCOD()?提取的唯一代码作为第一个参数,然后是优化操作数的参数。
在本例中:
请注意, SOLVERETURN 关键字用于将数据传递回编辑器。将该宏另存为 Macros 文件夹中的 PETC.zpl。曲率求解值必须以曲率? (1/R) 的形式返回,而不是曲率半径。所有其他求解直接返回值。
要应用宏,请在像面的曲率半径单元中选择求解框,然后选择 ZPL 宏求解类型,然后在单元格中键入宏名称:
瞧!OpticStudio 自动更新求解,并在“求解类型?( Solve Type )”框中放置“Z”,以指示其处于激活状态:
第二个示例,我们将要使一个非序列物体在另一个非序列物体的末端之后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)”部分中的公式给出:
因为这是 CPC 矩形?物体,所以有两个相关的长度值:X 和 Y,两个长度中较小的将被 OpticStudio 用作 CPC的长度,除非该长度大于“长度?( Length )”参数。本例中的长度是“长度”参数的值。因此,宏应使用上面的公式计算 CPC 物体的 X 和 Y 长度,选择两个值中较小的,添加10 mm偏移,并将该值返回给矩形物体的 Z 位置?( Z Position )参数。如果 X 和 Y 之间的较小长度仍大于“长度”参数值,则宏应在“长度”参数值上添加10 mm偏移,然后返回该值。
可以在文章附件中找到执行上述操作的 REC_CPC.ZPL 宏:
如前所述,关键字 SOLVERETURN 用于将所需值传递回 NSCE。将宏放置在 <Documents>\Zemax\Macros ?文件夹后,在主菜单中单击:宏?( Macros )?>?更新宏列表?( Refresh Macro List )。
在物体2(矩形)的参数?“Z 位置”的求解框中,选择“ ZPL 宏”,然后键入宏名称:
就像前面的示例一样,NSCE 将在参数旁边显示?“ Z”,表明已在该参数上设置了 ZPL 解:
请注意,如果使用 Ctrl-A 在文件中定义的2个组态之间切换会发生什么。CPC 矩形物体的 Y 角(度)参数在20到40度之间更改,因此物体的长度也会更改。发生这种情况时,应用于物体2的?“Z 位置” ZPL 求解将自动更改,以根据对应操作将此物体始终放置在 CPC 物体末端的10毫米后。
宏求解非常普遍,几乎可以使用任何计算来确定求解值。ZPL 支持的所有函数和关键字均可用。从宏菜单执行或作为求解执行的 ZPL 宏之间没有区别。但是,编写 ZPL 求解时应认真仔细:
通常,宏求解应保持简短,简单,并避免冗长的计算。
最后,请注意,OpticStudio 不会尝试限定或验证求解宏。此功能很强大,且具有灵活性,但必须谨慎使用。