Skip to content
/ ZOSPy Public
forked from MREYE-LUMC/ZOSPy

ZOSPy 是Ansys OpticStudio的API包装器。它通过 .NET 连接,提供了一种更直观的方式,让用户使用Python与ZOS-API进行交互。

License

Notifications You must be signed in to change notification settings

imyu37/ZOSPy

 
 

Repository files navigation

ZOSPy

PyPI - Version Python Version from PEP 621 TOML Conda Version GitHub Actions Workflow Status Documentation Status JOSS Zenodo

关于

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了解我们的研究。

About

ZOSPy 是Ansys OpticStudio的API包装器。它通过 .NET 连接,提供了一种更直观的方式,让用户使用Python与ZOS-API进行交互。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%