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“对象”,作为是接口类型的一种。接口决定对象的哪些特性可用。特性是指属性或函数:
  • 属性表示定义或者读取设置、已存储的值。

  • 函数为命令,表示对象可以执行的操作。

调用对象的函数或属性总是会执行返回。可以进行返回的类型包括:
  • 数值(双精度型、整数型、…)、文本(字符串)、布尔(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 接口的属性,请单击ILensDataEditorZemax光学设计技术教程:了解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
登录后免费查看全文
立即登录
默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注