更改设置(Changing Settings)

'IAS_':用于分析的设置界面。

ZOSAPI是基于"界面(Interfaces)"的的概念创建的。(通过读者的练习来加深对接口的理解)

作为一名经验丰富的 OpticStudio用户,您知道每个分析都具有自己的"设置(Setting)"组。在ZOSAPI中,每个分析的设置都是在一个界面中定义的,为了让编译器了解您要执行的操作,您必须告知编译器您在使用的接口。OpticStudio还将通常"分组"在一起的每个分析放在各自的"名称空间(namespaces)"中。例如,对于FftMtf分析,您需要在文件的顶部添加另一个"using"语句:

using ZOSAPI.Analysis.Mtf;

以下代码行提供了对FftMtf分析设置的访问权限:

IAS_FftMtf FftMtf_Settings = FftMtf.GetSettings() as IAS_FftMtf;

您可解读为:

使用分析(变量为FftMtf),将Settings分配给变量FftMtf_Settings,并使用"FftMtf Analysis分析设置的接口(Interface to Analysis Settings for the FftMtf Analysis)"来访问其中的数据。

注意:虽然可以使用C#语言类型'type''var',但是在编译时使用实际类型名称来获取可能出现的类型错误是不太明智的。

含"内置"类型的设置(Settings with 'built-in' types)

内置类型值的设置(bool、int、double等)与预期的一样简单:

FftMtf_Settings.ShowDiffractionLimit = true;

FftMtf_Settings.UsePolarization = false;

FftMtf_Settings.MaximumFrequency = 42.0;

bool fftIsUsingDashes = FftMtf_Settings.UseDashes;

具有离散值的设置(Settings That Have Discrete Values)

在OpticStudio UI中,这些设置通过从选项列表(OpticStudio UI下拉菜单中显示)中的选项来设置。首先将"选项列表(list of choices)"定义为"enum"的成员,然后通过将enum作为它的类型来定义这些设置。因此:

MtfTypes currentType = FftMtf_Settings.Type;

FftMtf_Settings.Type = MtfTypes.SquareWave;

FftMtf_Settings.SampleSize = SampleSizes._128x128;

"选项列表"示例:



视场(Fields)

视场(Fields)使用函数来获取和设置视场值。还有其它功能可用于设置视场。"set"函数返回"IMessage",其中包含了当您尝试将视场设置为非法值时发生的任何错误。

int nF_FftMtf = FftMtf_Settings.Field.GetFieldNumber();
IMessage iM_SetFieldN = FftMtf_Settings.Field.SetFieldNumber(nF + 11);
IMessage iM_UseAllFields = FftMtf_Settings.Field.UseAllFields();

波长(Wavelengths)

波长(Wavelengths) 使用函数来获取和设置波长值。还有其它功能可用于设置波长。"set"函数返回"IMessage",其中包含了当您尝试将波长设置为非法值时发生的任何错误。

int numW = FftMtf_Settings.Wavelength.GetWavelengthNumber();
IMessage iM_WaveN = FftMtf_Settings.Wavelength.SetWavelengthNumber(11);
IMessage iM_UseAllWaves = FftMtf_Settings.Wavelength.UseAllWavelengths();

表面(Surfaces)

表面(Surfaces) 使用函数来获取和设置其值。还有其它功能可用于设置表面。"set"函数返回"IMessage",其中包含了当您尝试将表面设置为非法值时发生的任何错误。

int nS = FftMtf_Settings.Surface.GetSurfaceNumber();
IMessage iM_SetSurfN = FftMtf_Settings.Surface.SetSurfaceNumber(22);
IMessage iM_UseImageSurf = FftMtf_Settings.Surface.UseImageSurface();
IMessage iM_UseObjSurf = FftMtf_Settings.Surface.UseObjectiveSurface();

下一部分: