0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何從ZPL宏中調(diào)用另一個ZPL宏?

LD18688690737 ? 來源:光電資訊 ? 2023-02-25 15:19 ? 次閱讀

通常,在單獨的代碼段中執(zhí)行計算的每個步驟是一種很好的編程實踐,本文介紹如何從另一個宏中調(diào)用 ZPL 宏,以及如何在宏之間來回傳遞數(shù)據(jù)。

介紹

在編寫執(zhí)行許多步驟的ZPL宏時,通常在單獨的代碼段中執(zhí)行每個步驟是一種良好的編程做法。這可以通過ZPL子例程來完成,使用GOSUB,SUB,RETURN和END關(guān)鍵字。但是,在某些情況下,在單獨的宏中執(zhí)行每個步驟,然后從主(父)宏調(diào)用這些單獨的(子)宏中的每一個可能更容易。例如,如果要在許多不同的宏中執(zhí)行相同的計算,則在隨后由各個父宏調(diào)用的子宏中執(zhí)行此計算會更有效。這可以在OpticStudio中使用關(guān)鍵字CALLMACRO來完成。

從一個宏中調(diào)用另一個宏

可以在本文附帶的.ZIP文件中找到調(diào)用兩個單獨子宏的父宏的示例。這些宏文件應(yīng)放在{Zemax}Macros 目錄下,并用于位于{Zemax}SamplesObjectives 目錄中的文件“Cooke 40 degree field.zmx”。

poYBAGP5tpOAUzjtAADBSL7F5BI957.jpg

在這種情況下,數(shù)值和字符串值是簡單的測試值,用于演示在父宏和子宏之間來回傳遞數(shù)據(jù)的方法。

然后,父宏使用關(guān)鍵字CALLMACRO調(diào)用第一個子宏(CALLMACRO_TEST_CHILD1.ZPL)。在子宏中,存儲在宏緩沖區(qū)中的值使用CALD和$CALLSTR數(shù)字函數(shù)打印到輸出窗口:

pYYBAGP5trCAGPEfAACU5OYiwWE135.jpg

然后,該宏使用RAYTRACE關(guān)鍵字和OPDC函數(shù)計算弧矢方向光瞳坐標 (Px = 0)和固定視場坐標 (Hx = Hy = 0) 處的各個子午光瞳坐標 (Py)的光程差:

poYBAGP5tsqAHVGjAACz2PzwSTg116.jpg

在此子宏中,光瞳坐標的值(存儲在x數(shù)組中)使用以下方法傳遞回父宏:

poYBAGP5tuOADRs4AADVFI6Ze2Q697.jpg

新字符串值也作為測試放置在宏緩沖區(qū)中,以確保將此數(shù)據(jù)傳遞回父宏。子宏完成后,OpticStudio 將返回到父宏,并且光瞳坐標的值將存儲在相應(yīng)的數(shù)組中:

poYBAGP5tv-AUzjaAACL29wA2kE135.jpg

然后,父宏調(diào)用第二個子宏 (CALLMACRO_TEST_CHILD2.ZPL)。此宏與第一個子宏相同,唯一的區(qū)別是OPD數(shù)據(jù)(存儲在y數(shù)組中)而不是光瞳坐標被傳遞回父宏:

pYYBAGP5tyOAXqUmAADpyu7McuE589.jpg
poYBAGP5tyyAUhhMAAEKv4xenqU411.jpg

作為測試新的字符串值再次放置在宏緩沖區(qū)中,以確保將此數(shù)據(jù)傳遞回父宏。然后將數(shù)字OPD 數(shù)據(jù)存儲到父宏的數(shù)組中:

pYYBAGP5t1eAZ6T_AAB-pD2ri_k930.jpg

最后,父宏使用關(guān)鍵字PLOT繪制 OPD 與光瞳坐標數(shù)據(jù):

pYYBAGP5t2uAPGFDAADJVQqWSHk118.jpg
PLOT GO 然后將結(jié)果打印到圖形窗口:

8fd69dce-b2c2-11ed-bfe3-dac502259ad0.jpg







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    20384
  • ZEMAX
    +關(guān)注

    關(guān)注

    3

    文章

    34

    瀏覽量

    11318
  • sub
    sub
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    2224

原文標題:Zemax光學(xué)設(shè)計技術(shù):如何從ZPL宏中調(diào)用另一個ZPL宏

文章出處:【微信號:光電資訊,微信公眾號:光電資訊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    vi調(diào)用另一個vi,并將數(shù)據(jù)傳給被調(diào)用vi

    我想在vi調(diào)用另一個vi比如說,在這個vi1,我獲得了
    發(fā)表于 03-28 13:57

    C語言定義#和##的作用

    : helloworld , 就可以通過這樣的的調(diào)用, printf( str(helloworld) );2. ## : 在定義,將其前后的兩變量拼接在
    發(fā)表于 08-23 18:22

    C語言中的

    我們對定義的使用更加的常江,下面我們方面來了解下函數(shù)的使用。1.函數(shù)的書寫#def
    發(fā)表于 12-13 15:32

    擴展問題

    MPLAB IDIDV3.65和XC8HI,“擴展工具”是方便的工具來查看在項目文件的擴展(右鍵單擊
    發(fā)表于 04-14 09:57

    【原創(chuàng)文章】程序的調(diào)試和使用的技巧

    的dprint)會自動根據(jù)程序中表達式的內(nèi)容,生成一個字符串的(示例的#expr)。這樣同樣可以在程序中表示一個字符串。②進
    發(fā)表于 08-18 17:27

    ise工程調(diào)用后,map時出錯

    工程環(huán)境:ise 14.7FPGA板:Xilinx xc6slx25-3ftg256項目:在工程top文件調(diào)用出現(xiàn)的問題:對工程進行綜合時,報如下錯誤。
    發(fā)表于 03-04 09:34

    ios的使用注意點

    使用的時候, 其中會有很多的注意點, 如果不小心被忽略, 那么將會帶來完全不想要的結(jié)果。 所以要想靈活的使用它, 那么還是先了解些比較好。 而且在iOS開發(fā)如果你是使用OC, 那么你可能經(jīng)常會使用到#define(swift當(dāng)前不支持
    發(fā)表于 09-25 17:30 ?0次下載
    ios<b class='flag-5'>中</b><b class='flag-5'>宏</b>的使用注意點

    excel的使用方法、技巧和步驟

    excel的使用方法如下: 、建立 二、執(zhí)行 三、編輯和刪除
    發(fā)表于 11-19 10:16 ?11.6w次閱讀
    excel<b class='flag-5'>中</b><b class='flag-5'>宏</b>的使用方法、技巧和步驟

    什么是,excel的作用

    所謂,就是些命令組織在起,作為單獨命令完成
    發(fā)表于 11-19 10:36 ?5.5w次閱讀

    QuartusⅡ功能模塊的使用

    QuartusⅡ軟件針對常用的功能,提供了參數(shù)化(Parameterized)的功能(megafunctions)模塊,通過調(diào)用功能模塊,可以減少工作量,加快設(shè)計的進程。 用戶可以通過向?qū)Чぞ?/div>
    發(fā)表于 04-03 15:34 ?12次下載

    幾種特殊的函數(shù)封裝方式介紹

    : #defineINT_SWAP(a,b) inttmp=a; a=b; b=tmp但上述的具有明顯的缺點:當(dāng)遇到 if、while 等語句且不使用花括號僅調(diào)用
    的頭像 發(fā)表于 11-03 16:03 ?2032次閱讀

    當(dāng)使用參數(shù)調(diào)用時,會將參數(shù)替換為主體

    在大多數(shù)定義示例,每次出現(xiàn)的參數(shù)名稱都帶有括號,并且另一對括號通常會包圍整個定義,這是編寫
    的頭像 發(fā)表于 11-16 16:41 ?2147次閱讀

    函數(shù)的三種封裝方式

    : #define INT_SWAP(a,b) \ int tmp = a; \ a = b; \ b = tmp 但上述的具有明顯的缺點:當(dāng)遇到 if、while 等語句且不使用花括號僅
    的頭像 發(fā)表于 12-22 15:49 ?3608次閱讀

    如何才能避免【】的這七誤區(qū)

    當(dāng)使用參數(shù)調(diào)用時,會將參數(shù)替換為主體,并與其他輸入文件起檢查結(jié)果,以進行更多的調(diào)用,可以
    的頭像 發(fā)表于 12-24 14:29 ?355次閱讀

    c語言定義可以嵌套嗎?

    c語言定義可以嵌套嗎? C語言定義可以嵌套,也就是定義可以包含另一個
    的頭像 發(fā)表于 09-04 17:38 ?2949次閱讀