Zemax光學設計技術教程:了解ZOS-API結構的基礎知識

本文介紹了ZOS-API結構的基礎知識和應用于ZOS-API的面向對象編程的概念。盡管ZOS-API面向對象的本質在很大程度上是“隱藏的”,但它可以幫助您更好地理解ZOS-API的詞匯和結構。作者 Sandrine Auriol簡介本文將重點介紹一些關于面向對象編程的關鍵概念,以及如何在ZOS-API中使用它。您不需要成為開發人員就可以使用ZOS-API,同時,掌握一些基礎知識將使得ZOS-API的使用變得更加簡單。什么是面向對象編程?面向對象語言(Object-Oriented Languages)使用了高效的方法進行編程。使用對象(Objects)和種類(Classes)來組織數據,使代碼可以在不同的工程中重復使用,而不是每次都從頭開始編寫。這個概念易于用來定義OpticStudio文件。每個.zmx文件代表一個不同的序列和(或)非序列模式下的光學系統,這些光學系統中可以設置不同數量的物體和(或)表面,…
Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖1在面向對象程序中,每個光學系統都被看作一個API“對象(Object) ”。光學系統有共同的特征,如波長、表面、…在面向對象編程中,具有共同特征的對象被分組到一個主列表中。具有這個特征的主列表被稱為類(Class)或接口(Interface)。Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖2這些類被進一步分組到稱為名稱空間(Namespaces)的庫中。如下為代碼結構的總結:Namespace (Library containing Classes and Interfaces)Class / Interface: group (template with attributes)Functions (action)Property (set or get a value)如果您想要獲得更多信息,請查看鏈接: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/general-structure-of-a-csharp-programZOS-API的結構ZOS-API是被稱為名稱空間的接口層次結構。使用ZOS-API意味著創建API“對象”,作為是接口類型的一種。接口決定對象的哪些特性可用。特性是指屬性或函數:
  • 屬性表示定義或者讀取設置、已存儲的值。

  • 函數為命令,表示對象可以執行的操作。

調用對象的函數或屬性總是會執行返回??梢赃M行返回的類型包括:
  • 數值(雙精度型、整數型、…)、文本(字符串)、布爾(Boolean) (是或否)。
    int value = Object1.NumberOfFields;

  • 新對象,作為一種接口。
    IField New_Object = Object1.GetField(1);

  • 一種屬性是獲取( [get] ),一種是獲取、設置( [get, set] )。
    可用于獲取數值的語句是: value = Object1.Normalization;
    可用于設置數值的語句是: Object1.Normalization = value;

接口的層次結構讓我們打開示例文件,看看代碼是如何構成的。
  • 打開示例文件 "\Zemax\ZOS-API Sample Code\C#\CSharpStandalone_01_new_file_and_quickfocus.cs",這個示例文件可以用文本編輯器打開。

該示例文件是用c#編寫的,但是面向對象編程的概念對于ZOS-API中使用的所有語言都是通用的。
  • 打開語法幫助文件(Syntax Help File)。

Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖3在幫助文件(Help File)中,主接口被稱為ZOSAPI.IOpticalSystem,它相當于一個單獨的ZMX文件。Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖4在示例文件中,第56行使用了主類 IOpticalSystem 或 ZOSAPI.IopticalSystem,代碼為:IOpticalSystem TheSystem = TheApplication.PrimarySystem;該行表示定義了稱為TheSystem 的對象,該對象是IOpticalSystem接口的實例。這意味著創建了全新的光學系統,即新的 .zmx 文件。要定義該系統的特征,請單擊ZOSAPI.IOpticalSystem:Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖5接口的函數和屬性TheSystem 的特征可以通過 IOpticalSystem 接口的函數和屬性來描述。類的概念易于理解,因為在將 TheSystem 定義為 IOpticalSystem 類的對象時,它將具有訪問 IOpticalSystem 所有特性的權限。這些特性定義了ZMX文件的共同特征。Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖6LDE是 IOpticalSystem 接口的屬性之一。使用 LDE 屬性獲取鏡頭數據編輯器(Lens Data Editor)的方法,如幫助文件中所示:Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖7回到示例文件第95行,代碼寫法如下:ILensDataEditor TheLDE = TheSystem.LDE;該代碼創建名為TheLDE 的對象,即鏡頭數據編輯器。要創建TheLDE,可以使用TheSystem 的LDE 屬性的代碼。該屬性返回名為ILensDataEditor的接口??梢钥闯?,ZOS-API是在接口的層次結構上構建的。對象的創建過程被稱為實例化(Instantiation)。TheLDE 對象是 ILensDataEditor 類的實例。ILensDataEditor 接口的函數和屬性可用于 TheLDE 對象。在幫助文件中,要查看 ILensDataEditor 接口的屬性,請單擊ILensDataEditor。Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖8繼承在ILensDataEditor接口中,有屬性和函數。但也有從 IEditor 類繼承的屬性(Inherited Properties):Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖9IEditor 類稱為父類(Parent Class)。IEditor 父類為所有編輯器定義公共特征。ILensDataEditor 子類(Child Class)定義了鏡頭數據編輯器特定的函數和屬性。單擊 Ieditor 將會顯示繼承關系圖,如下所示:Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖10子類可以訪問父類的所有屬性和函數。例如,AddRow() 是所有編輯器通用的屬性,它在父類中定義,并且可由子類訪問。Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖11術語提示
  • 名稱空間:包含接口和類的層次結構的庫。
    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/namespaces/index
  • 類:包含一組數據和行為的數據結構。類包含屬性和函數。當使用類時,代碼會說明類是在哪個名稱空間中。代碼可以通過寫 using Namespace 來導入名稱空間,也可以提供包含名稱空間的完全限定類型名稱,例如:Namespace. class
  • 接口:類模板;它包含類可以實現的功能的定義。在ZOS-API中,以字母 I 開頭的類名是接口。由于繼承的存在,使接口的使用變得很有趣。一個類可以繼承一個類(單繼承)。一個類和一個接口可以繼承多個接口(多繼承)。

    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/index

  • 對象:變量。它是一個類/接口的成員/實例。
    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/objects
  • 成員:表示類的數據和行為。它可以是類的屬性或函數。
    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/members
  • 枚舉:由一組稱為枚舉列表的命名常量組成的一種獨特類型。enum 關鍵字用于聲明枚舉。
    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
  • 繼承:面向對象編程的基本特性之一。它允許定義再次使用的(繼承)、擴展或修改父類行為的子類。
    https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/inheritance
Ansys Zemax光學軟件咨詢與訂購方式聯系人:光研科技南京有限公司 徐保平手機號:15051861513微信號:13627124798Zemax光學設計技術教程:了解ZOS-API結構的基礎知識的圖12
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP