ZPL手册

ZPL宏求解可调用用户自定义的ZPL来定义求解值。
有关示例,请参阅关键字“SOLVEBEFORESTOP”。

有关求解的更多信息,请参阅镜头数据编辑器的“[设置菜单]( Setup Tab)” 的“[求解]( Solves)”栏目。
宏求解调用用户自定义的 ZPL 宏来计算求解。任何可在宏中计算的数值都可以返回到调用求解宏 的编辑器中。宏可利用编辑器中其他位置的数据,比如之前的表面。一旦计算出数据,可使用关键字 SOLVERETURN 将数据传递回编辑器。

举一个简单的例子,下面是一个宏,用于计算表面 1 和 2 之间的一阶光焦度,并且返回光焦度作 为求解值:

n1 = INDX(1) n2 = INDX(2) c2 = CURV(2)
SOLVERETURN (n2-n1)*c2

上例宏中直接通过表面编号来引用特定表面。这样有一个缺点,如果插入或删除了新表面,则需 要修改宏中对应的表面编号。此外,如果宏求解引用固定的表面编号,则某些功能不会正常运行, 比如镜面基底绘制。在这种情况下,可使用 ZPL 函数 SURC 在镜头数据编辑器的注释列中查找包含 特定文本的表面。假定在镜头数据编辑器中的第一个表面上输入了注释“My Surface”。可以通过 以下修订后的宏来计算上述光焦度:

A$ = “My Surface”
SURF = SURC(A$)
n1 = INDX(SURF)
n2 = INDX(SURF+1) c2 = CURV(SURF+1) SOLVERETURN (n2-n1)*c2

也可以使用 ZPL SOSO 数值函数来提取需要的表面或物体编号。
在求解宏中尽可能使用表面注释和 SURC 函数。

[有关 ZPL 宏求解的重要注意事项](Important Considerations for ZPL Macro Solves) 

宏求解非常通用,基本上可以使用任何计算来确定求解值。可以使用 ZPL 支持的所有函数和关键 字。通过宏菜单执行 ZPL 宏与作为求解执行 ZPL 宏并没有任何区别。但是,某些 ZPL 关键字和函数 不能在宏求解中使用。例如,如果从求解中调用“UPDATE”将更新所有求解,这将再次调用宏, 从而导致无限循环。如果宏求解中使用了关键字 INPUT,那么每次调用求解都需要用户输入数据, 这可能需要操作多次。宏求解中也不能使用在编辑器中设置数值的关键字和创建评价函数的关键

字。通常,宏求解应简短、简单,避免冗长计算,并且不能修改任何镜头数据。宏求解不能取决 于编辑器中后续求解的数据,这样会产生错误数据。因为如果先调用求解,然后后续求解又修改
了源数据,那么前面的宏求解也会出错。OpticStudio 不会自动进行验证求解宏。求解宏功能虽然
强大并且灵活,但必须谨慎使用。 只有当宏中的计算不基于任何光线数据时,宏求解才能放置在光阑面之前。有关更多详情,请参
阅 ZPL 关键字“SOLVEBEFORESTOP”的描述。
如 果 在 宏 中 出 现 错 误 或 无 效 条 件 , 且 无 法 计 算 求 解 值 , 则 宏 不 会 调 用 SOLVERETURN。 缺少 SOLVERETURN 的调用表明无法计算求解,且在光学系统中出现错误条件。这在优化过程中尤为重 要。

[列编号的整数代码](Integer Codes for Column Numbers)

如果要通过 ZPL 宏语言设置跟随求解,则列编号是必需提供的。列编号的定义方式如下:

0:当前列,即求解所放置的列。这是所有跟随求解的默认设置。
1-4:分别表示半径、厚度、圆锥系数和半口径。
5-17:分别表示参数 0 到 12



该文档由光学课堂(www.optkt.cn)生成

最后更新时间:2020/3/7 12:38:22

登录 后发表评论
0条评论
还没有人评论过~