执行分析#
ZOSPy 在 {py:mod} zospy.analyses中为 OpticStudio 分析提供了分析包装器。这些包装器为 OpticStudio 分析提供了一致且更 Pythonic 的接口。此外,它们将分析的输出解析为 Python 对象以便于访问。可用的分析分组在与 OpticStudio 中的分析组相对应的文件中(例如 {py:mod} zospy.analyses.mtf和 {py:mod} zospy.analyses.wavefront )。可用分析的概述可以在API 参考中找到。
分析包装器结构#
每个分析包装器都是一个接受分析设置作为其参数的类。要运行分析,将使用 OpticStudioSystem oss作为其参数调用 {py:meth} run <zospy.analyses.base.BaseAnalysisWrapper.run>方法。此方法还有一个可选的 {py:type} oncomplete <zospy.analyses.base.OnComplete>参数,该参数指定分析完成后要执行的操作。每个分析包装器也都有一个相应的设置类,允许在创建分析对象的同时定义分析设置。以下示例对此进行了说明。
示例#
运行 FFT 通过焦点 MTF 分析,采样为 64x64,焦点步长为 0.1:
import zospy as zp
zos = zp.ZOS()
oss = zos.connect()
...
mtf = zp.analyses.mtf.FFTThroughFocusMTF(sampling="64x64", delta_focus=0.1).run(oss, oncomplete="Close")
{#analysis-with-settings} 为表面 3 和 4 之间的基点分析创建一个设置对象,并运行该分析:
import zospy as zp
zos = zp.ZOS()
oss = zos.connect()
...
cardinal_points_settings = zp.analyses.reports.CardinalPointsSettings(surface_1=3, surface_2=4)
cardinal_points = zp.analyses.reports.CardinalPoints.with_settings(cardinal_points_settings).run(oss)
直接访问 OpticStudio 分析#
如果您想运行 ZOSPy 中未实现的分析,您可以使用 {py:func} zp.analyses.new_analysis <zospy.analyses.base.new_analysis>直接访问 OpticStudio 分析。分析类型必须指定为ZOSPy 常量,例如:
import zospy as zp
zos = zp.ZOS()
oss = zos.connect()
...
analysis = zp.analyses.new_analysis(oss, zp.constants.Analysis.AnalysisIDM.PathAnalysis, settings_first=True)
# Adjust the settings of the analysis
analysis.Settings.FirstRay = 1
# Run the analysis
analysis.ApplyAndWaitForCompletion()
如果settings_first=True ,则无需运行分析即可创建分析,从而允许您在运行分析之前调整设置。
小技巧
如果您编写了代码来直接访问 OpticStudio 分析,请考虑将其贡献给 ZOSPy。:::