通常,在单独的代码段中执行计算的每个步骤是一种很好的编程实践,本文介绍如何从另一个宏中调用 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 然后将结果打印到图形窗口:
互联互通一卡通
SiC MOSFET:栅极-源极电压的浪涌抑制方法-负电压浪涌对策
雷达感应模块应用—路灯智能控制高效节能照明
华为第2部女性手机,有它绝对不买红米Note4X、魅蓝5s
首颗人工智能神经网络芯片标志着人工智能又一次的技术革新
如何从ZPL宏中调用另一个ZPL宏?
日本面部识别技术扎根,欲与中国企业一决一较高下?
种子水分测量仪的介绍
便携式血糖监测仪被广泛使用 高精度测量成需求
2021国家网络安全周 MobTech袤博科技践行网络安全
沐渥直流电机驱动模块开发,为电子设备提供动力之源
【串联谐振】10kv、35kv电缆1公里,串联谐振该怎么配置
Alphabet、亚马逊、苹果、三星将在未来几年成智能家居产业四大巨头
人工智能“医生”出乎你的意料!
TOF技术的优势和劣势
高通收购NXP对台湾晶圆代工厂及封测厂的接单利多于弊
深度负反馈有何好处?
苹果加大力度审查“非理性高价”App Store应用
realme GT规格配置、上市时间曝光
回顾半导体公司带来的黑科技分析介绍