ZOSPy是Ansys OpticStudio API 的包装器。它通过 .NET 连接,提供了一种更Python化、更直观的方式,让用户使用Python与ZOS-API进行交互,如《开源软件杂志》论文所述。因此,它允许您用更少的编码进行更多的光学建模。
除了通过 ZOS-API 完全访问所有 OpticStudio 功能之外,ZOSPy 还提供以下功能:
zospy.analyses
中几个 OpticStudio 分析的包装函数;- 轻松访问
zospy.solvers
中的求解器; - 轻松访问
zospy.constants
中的所有 API 常量; - 自动完成所有 ZOS-API 端点和常量;
- 解决与Python.NET 3和与ZOS-API交互相关的常见问题。
可以从PyPi获取ZOSPy:
pip install zospy
也可以通过conda:
conda install conda-forge::zospy
创建并绘制包含一个单透镜的简单光学系统:
import matplotlib.pyplot as plt
import zospy as zp
zos = zp.ZOS()
oss = zos.connect()
# Create a new, empty system
oss.new()
# Set aperture and wavelength
oss.SystemData.Aperture.ApertureType = zp.constants.SystemData.ZemaxApertureType.FloatByStopSize
oss.SystemData.Wavelengths.GetWavelength(1).Wavelength = 0.543 # in μm
# Set the object at infinity
surface_object = oss.LDE.GetSurfaceAt(0)
surface_object.Thickness = float("inf")
# Add a dummy surface for visualization purposes
input_beam = oss.LDE.InsertNewSurfaceAt(1)
input_beam.Comment = "input beam"
input_beam.Thickness = 10
# Use a stop diameter of 4 mm
surface_stop = oss.LDE.GetSurfaceAt(2)
surface_stop.SemiDiameter = 2
# Add a lens with n = 1.5
lens_front = oss.LDE.InsertNewSurfaceAt(3)
lens_front.Comment = "lens front"
lens_front.Radius = 20
lens_front.Thickness = 1
zp.solvers.material_model(lens_front.MaterialCell, refractive_index=1.5)
lens_back = oss.LDE.InsertNewSurfaceAt(4)
lens_back.Comment = "lens back"
lens_back.Radius = -20
lens_back.Thickness = 19.792 # System is in focus
# Show the system in the 3D viewer
draw_3d = zp.analyses.systemviewers.Viewer3D(surface_line_thickness="Thick", rays_line_thickness="Thick").run(oss)
plt.imshow(draw_3d.Data)
plt.axis("off")
plt.show()
关于如何使用ZOSPy可以参考 文档 获得更多信息。 可以在示例展厅找到更多详尽的示例。
代码按原样提供,不提供任何保证。它仅用于研究目的。不提供任何保证,也不能从中衍生任何权利,正如MIT 许可证中所述。
ZOSPy正式支持Python 3.9-3.13。它可能适用于较旧的Python版本,但不提供对这些版本的支持。此外,需要安装Ansys Zemax OpticStudio才能正常工作。
查看兼容性获得最新的兼容性信息。
当发表使用此软件包获得的研究成果时,请引用我们发表在《开源软件杂志》上的论文:
Vught, L. van, Haasjes, C. & Beenakker, J.W.M. (2024). ZOSPy: Optical ray tracing in Python through OpticStudio. Journal of Open Source Software, 9(96), 5756. https://doi.org/10.21105/joss.05756
在提交拉取请求之前,请阅读我们的贡献指南。
如有任何疑问,请随时通过电子邮件zospy@mreye.nl 与我们联系,或访问mreye.nl了解我们的研究。