实现自由曲面公差分析---Zemax22.3的复合表面是什么?

[复制链接]
optkt 发表于 2022-11-8 23:35:52 | 显示全部楼层 |阅读模式


2022年11月2日 Ansys发布了 最新的 Ansys Zemax OpticStudio 2022 R2.02 OpticStudio 22.3

增加了复合表面(Composite Surface),这里做个简要介绍


可用版本:Zemax OpticStudio 22.3版本(专业/高级订阅)或Ansys Zemax OpticStudio(专业/高级/企业)2022 R2.02版本

先看结论:复合表面是将多个面叠加到一起成为一个面。这样在一个基础表面上可以增加多个其他表面的矢高分布,可以实现一些新的建模和自由曲面公差分析等。



image.png



以下内容译自Zemax官方知识库

设置

如下,需要将2 3 面叠加到4面上。
image.png

首先,设置面2为叠加矢高的面,打开属性面板,点Composite页,勾选 Add sag to the next surface
image.png

任何数量的表面都可以加在一起,这些表面被称为 "复合附加面(Composite Add-on)",或简称 "附加面(Add-on)"。附加面的矢高将被添加到下一个附加面,最后总的矢高将被添加到镜头数据编辑器(LDE)中的后一个普通表面,它被称为 "复合基面(Composite Base)",或简称为 "基面(Base)"。
然后,基面轮廓将是所有附加面轮廓的总和,再加上它自己的轮廓。Add-On和Base的总和被称为 "Composite Stack"。

如图2所示,附加物行的颜色是浅黄色,而基础行的颜色是亮黄色。
image.png



不能为复合附加面设置材料和镀膜,因为它只提供矢高。它的材料和镀膜属性在基面上设置。同时,附加面的孔径跟随基面。

简而言之,就是将附加面和基面堆(Stacking)在了一起,在光线追踪中,光线与总的矢高追迹,复合附加面并不直接参与光线追迹。

layout 绘制也是总的矢高,不仅仅显示基面的矢高。



image.png
复合面layout

image.png
附加面禁用后的基面layout

支持的表面

  • Biconic
  • Biconic Zernike
  • Chebyshev Polynomial
  • Even Asphere
  • Extended Asphere
  • Extended Odd Asphere
  • Extended Polynomial
  • Grid Sag
  • Irregular
  • Odd Asphere
  • Odd Cosine
  • Off-Axis Conic Freeform
  • Periodic
  • Polynomial
  • Q-Type Asphere
  • Q-Type Freeform
  • Standard
  • Superconic
  • Tilted
  • Toroidal
  • Zernike Fringe Sag
  • Zernike Standard Sag
  • Zernike Annular Standard Sag


其他功能

单个禁用附加面
image.png


在编辑器整体禁用附加面
image.png

在编辑器整体激活附加面
image.png

在附加面上可以右键,可以显示/隐藏/删除附加面。
image.png

矢高图Sag map

矢高图也增加对附加面控制的功能。

面3,面4为附件面,面5为基面。默认矢高是逐个累加的。即选中后面的面自动加上了前面的面。

面3
image.png

面3+面4(选中面4)
image.png

面3+面4+面5(选中面5)
image.png


如果想查看单独的矢高,需要选中 "Remove Composite Sag",或 "Remove Base Sag"

面4(选中面4,勾选去除Composite Sag)
image.png

面5(选中面5,勾选去除Composite Sag)
image.png

面3 + 面4(选中面5,勾选去除Base Sag)
image.png


离轴孔径支持(off-axis apertures )


如果您在附加表面的复合选项卡中点击 "设置倾斜/衰减器以跟随基础表面的光圈(Set Tilt/Decenter to follow Base surface aperture) "按钮,附加表面将自动以基础表面的离轴孔径为中心。
按下该按钮,OpticStudio会自动填写复合选项卡中的倾斜和偏心,使所有附加面的堆与基面的离轴孔径坐标系位置重合,方向一致。

请注意,复合堆的倾斜/中心 只能在最靠近基座表面的附加表面上看到,在那里使用了 "设置倾斜/中心以跟随基座表面的孔径 "按钮。所有其他附加表面的数值将是灰色的,自动跟随这个附加面。

如果用户手动改变了偏心值,点击"更新倾斜 "按钮(如图11所示)可以用来自动填充倾斜值,使附加面的方向与基面在指定的偏心处一致。

公差操作数TIRR, TEXI, and TEZI

以前,操作数TIRR, TEXI , TEZI 只能用在特定面型上。
image.png


现在,由于复合曲面的出现,任何可以成为复合基面的曲面类型都可以使用这三个操作数来做公差。(注意,TIRR、TEXI和TEZI的扩展能力不包括对离轴孔的支持)。

对于使用的表面类型,TIRR操作数将被展开为不规则复合表面。TEXI操作数将被展开为Zernike Fringe Sag复合曲面。而TEZI操作数将被展开为Zernike Standard Sag复合面

我们将以下面的手机设计案例(图13)为例。
image.png

公差数据编辑器(TDE)为手机镜头的表面3和4增加了TEZI操作数。以前,Q型非球面类型不能直接用EZI,但现在不仅可以,还可以使用其他公差功能,如图14所示。

image.png

运行公差并保存蒙特卡洛文件

image.png



打开一个Monte Carlo文件来验证并更好地理解操作数是如何给表面增加不规则性公差的。如图16所示,Q型非球面表面添加了一个附加表面,该表面带有TDE中指定的Zernike Standard Sag的扰动。

image.png



译者注:回归本质,是将公差叠加了基面,从物理本质上来说更合理,实际值就是标准值加上公差。以往做非球面公差分析需要做自定义面型,只是代码上实现了矢高累加的过程。

API 控制
为复合曲面增加了两个新的API命令,IsCompositeSurface和SetOffAxisTiltAndDecenter()。


IsCompositeSurface用于该参数的设置和获取值。SetOffAxisTiltAndDecenter()根据离轴表面孔径中心的基础复合表面法向量的计算来填充表面属性。

下面是一个Python的代码片段供你参考。


  1. TheSystem = TheApplication.PrimarySystem;

  2. TheLDE = TheSystem.LDE

  3. # Get Surface j Information

  4. CompositeTest = TheLDE.GetSurfaceAt(j)

  5. # Check “Composite Surface:Add sag to the next surface”

  6. CompositeTest.CompositeData.IsCompositeSurface=1

  7. # Press “Set Tilt/Decenter to follow Base surface aperture” button

  8. CompositeTest.CompositeData.SetOffAxisTiltAndDecenter()

  9. # Extract Composite Surface Tilt/Decenter value

  10. CompositeTiltX=CompositeTest.TiltDecenterData.BeforeSurfaceTiltX

  11. CompositeTiltY=CompositeTest.TiltDecenterData.BeforeSurfaceTiltY

  12. CompositeTiltZ=CompositeTest.TiltDecenterData.BeforeSurfaceTiltZ

  13. CompositDecenterX=CompositeTest.TiltDecenterData.BeforeSurfaceDecenterX

  14. CompositDecenterY=CompositeTest.TiltDecenterData.BeforeSurfaceDecenterY

  15. # Change the Tilt/Decenter values manually

  16. CompositeTest.TiltDecenterData.BeforeSurfaceTiltX = 0

  17. CompositeTest.TiltDecenterData.BeforeSurfaceDecenterY = 0
复制代码



ZPL 支持
同样ZPL宏也增加了控制命令
  1. COMPOSITEON( surface number ) - keyword
  2. COMPOSITEOFF( surface number ) - keyword
  3. COMPOSITEOFFAXISAPERTUREON ( surface number ) – keyword
  4. ISCS(surface number) -> returns 1|0 - numeric function
  5. [ISCS() returns 0 when the surface is not composite surface and returns 1 if the surface is composite surface.]
复制代码


样例代码:
  1. ! Uncheck the composite surface checkbox
  2. PRINT "Turn off composite surface j"
  3. COMPOSITEOFF j
  4. A = ISCS(j)
  5. ! ISCS () return 0 if it's not composite surf., return 1 if it's composite surf.
  6. IF (A < 0.5)
  7.     PRINT " ==> Composite surface flag is OFF"
  8. ELSE
  9.     PRINT " ==> Composite surface flag is ON"
  10. ENDIF   

  11. ! Check the composite surface checkbox
  12. PRINT "Turn on composite surface j"   
  13. COMPOSITEON j
  14. A = ISCS(j)
  15. IF (A > 0.5)
  16. PRINT " ==> Composite surface flag is ON"
  17. ELSE
  18.     PRINT " ==> Composite surface flag is OFF"
  19. ENDIF   

  20. ! Press the "Set Tilt/Decenter to follow Base surface aperture" button
  21. PRINT "Set Tilt/Decenter to follow Base surface aperture"
  22. COMPOSITEOFFAXISAPERTUREON j
  23. PRINT " ==> Click Tilt/Decenter to follow Base surface aperture button"
复制代码






总结:

复合表面将多个表面合到一起进行分析,计算。同时官方例子里面展示了公差分析的底层也是用复合表面。

虽然这个功能以前用其他手段也可以实现,但是从易用性上来说算是一个比较大的改进。







网站管理员,微信:AlphaHL
回复

使用道具 举报

全部回复0 显示全部楼层
暂无回复,精彩从你开始!

快速回帖

您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则

关于楼主

管理员
  • 主题

    528
  • 回答

    142
  • 积分

    20107
联系客服 关注微信 访问手机版 返回顶部 返回列表