通常,在單獨的代碼段中執行計算的每個步驟是一種很好的編程實踐,本文介紹如何從另一個宏中調用 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 然后將結果打印到圖形窗口:
審核編輯:劉清
-
字符串
+關注
關注
1文章
584瀏覽量
20553 -
ZEMAX
+關注
關注
3文章
34瀏覽量
11381 -
sub
+關注
關注
0文章
13瀏覽量
2256
原文標題:Zemax光學設計技術:如何從ZPL宏中調用另一個ZPL宏
文章出處:【微信號:光電資訊,微信公眾號:光電資訊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論