如何从ZPL宏中调用另一个ZPL宏?

电子说

1.3w人已加入

描述

通常,在单独的代码段中执行计算的每个步骤是一种很好的编程实践,本文介绍如何从另一个宏中调用 ZPL 宏,以及如何在宏之间来回传递数据。

介绍

在编写执行许多步骤的ZPL宏时,通常在单独的代码段中执行每个步骤是一种良好的编程做法。这可以通过ZPL子例程来完成,使用GOSUB,SUB,RETURN和END关键字。但是,在某些情况下,在单独的宏中执行每个步骤,然后从主(父)宏调用这些单独的(子)宏中的每一个可能更容易。例如,如果要在许多不同的宏中执行相同的计算,则在随后由各个父宏调用的子宏中执行此计算会更有效。这可以在OpticStudio中使用关键字CALLMACRO来完成。

从一个宏中调用另一个宏

可以在本文附带的.ZIP文件中找到调用两个单独子宏的父宏的示例。这些宏文件应放在{Zemax}Macros 目录下,并用于位于{Zemax}SamplesObjectives 目录中的文件“Cooke 40 degree field.zmx”。

字符串

在这种情况下,数值和字符串值是简单的测试值,用于演示在父宏和子宏之间来回传递数据的方法。

然后,父宏使用关键字CALLMACRO调用第一个子宏(CALLMACRO_TEST_CHILD1.ZPL)。在子宏中,存储在宏缓冲区中的值使用CALD和$CALLSTR数字函数打印到输出窗口:

字符串

然后,该宏使用RAYTRACE关键字和OPDC函数计算弧矢方向光瞳坐标 (Px = 0)和固定视场坐标 (Hx = Hy = 0) 处的各个子午光瞳坐标 (Py)的光程差: 

字符串

在此子宏中,光瞳坐标的值(存储在 x 数组中)使用以下方法传递回父宏:

字符串

新字符串值也作为测试放置在宏缓冲区中,以确保将此数据传递回父宏。子宏完成后,OpticStudio 将返回到父宏,并且光瞳坐标的值将存储在相应的数组中:

字符串

然后,父宏调用第二个子宏 (CALLMACRO_TEST_CHILD2.ZPL)。此宏与第一个子宏相同,唯一的区别是OPD数据(存储在 y 数组中)而不是光瞳坐标被传递回父宏:

字符串
字符串

作为测试新的字符串值再次放置在宏缓冲区中,以确保将此数据传递回父宏。然后将数字OPD 数据存储到父宏的数组中:

字符串

最后,父宏使用关键字PLOT绘制 OPD 与光瞳坐标数据:

字符串
PLOT GO 然后将结果打印到图形窗口:

字符串







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分