Zemax → LensBench 对照
给 Zemax 用户的速查。✅ 已实现,🚧 规划中。2026-10-17 起,分析与操作数的口径已按 Zemax 对齐, 计算可信度见验证报告。
编辑器
| Zemax | LensBench | 状态 |
|---|---|---|
| Lens Data Editor | .lens 的 surf 行;GUI 表格 | ✅ |
| System Explorer | .lens 的 title / units / aperture / field / wave / catalogs / ray_aim | ✅ |
| Merit Function Editor | .lens 的 op / default 行(Zemax 操作数名),lb merit 看表 | ✅ |
| Multi-Configuration Editor | .lens 的 config / mc 行(引用写法同 var),zmx 往返;lb mc-set 改单个值 | ✅ 编辑、导入导出、按组态分析出图(--config)、多组态评价函数与优化;表面口径 APMN / APMX / APDX / APDY → mc ap_min@1 …(圆形口径 / 遮拦是内外半径、矩形是 x / y 半宽);TEMP / PRES → mc temp 20C, 60C / mc pres 1atm, 0atm(设计本身是 20 °C、1 atm;只换玻璃的折射率,按厂商目录的热色散系数换算到相对同温同压的空气,半径、厚度要变就另写 mc 行)。🚧 按面设气压 / 温度(MCE 里 PRES 之后的 GLSS 空白行,如真空腔)、MCE 的 TCE、MCSD、IGNR:导入时提示 |
| Tolerance Data Editor | .lens 的 tol / comp 行;lb tolerance 灵敏度分析 + 龙卷风图 | ✅ TRAD / TFRN / TTHI / TIND / TCON / TPAR(非球面系数,tol aN)/ TSDX / TSDY / TSTX / TSTY / TEDX / TEDY / TETX / TETY + COMP + TWAV,灵敏度与蒙特卡洛(--mode montecarlo);蒙特卡洛的分布同 STAT(tol stat normal / uniform / parabolic、sigma=,行尾 stat= 单独指定);zmx 的 TOL 行导入导出(含 TCON、TPAR、STAT;STAT 的排法按手册、未用 Zemax 文件核对,STAT 3 用户定义的分布不导入);tol abbe(阿贝数,%)已支持,zmx 的 TABB 单位待核实、先不导入导出;不规则度(TIRR / TEZI / TEXI)🚧:要非旋转对称的面形项——Zernike 矢高面(type=zernike)已经有了,公差那一层还没接;反求(Inverse Limit / Inverse Increment):`lb tolerance-inverse --limit … |
| ZPL 宏 / ZOS-API | CLI 命令 + --json、Python、MCP | ✅ |
LDE 列
| Zemax 列 | .lens | 备注 |
|---|---|---|
| Surface Type | type=standard / evenasph / oddasph / toroidal / paraxial / tilted / binary2 / grating / zernike / zernike_fringe / coordbreak | 不规则面、网格矢高、Zernike 相位面(Zernike Fringe / Standard Phase)、Chebyshev 等自由曲面、Binary 1 / 3、全息面等 🚧(导入时报 E-ZMX-TYPE);GRIN(梯度折射率)现阶段不做;USERSURF(依赖用户 DLL)不支持 |
| Tilted:X / Y Tangent | type=tilted tanx= tany= | 倾斜平面 z = tanx·x + tany·y |
| Toroidal:Radius of Rotation / Coeff on y^2… | type=toroidal rx= a2= a4=…(R、k 指 YZ 截面) | rx 不写 = 柱面 |
| Paraxial:Focal Length | type=paraxial f= | 理想薄透镜;入射没有像差时任何视场、任何共轭都完善成像,同 Zemax |
| Paraxial:OPD Mode | opd_mode=0 / opd_mode=1 | 0 按固定共轭(默认)、1 逐条光线积分;Mode 2 / 3 不支持,导入时按 0 |
| Binary 2:Diffract Order / Norm Radius / Coeff on p^2、p^4… | type=binary2 m= norm= p2= p4=…(基底 R、k、a2 a4 … 同偶次非球面) | p2 即 A1;相位项变量 var p2@3 |
| Diffraction Grating:Lines/µm / Diffract Order | type=grating lines=1.2/um m=-1(也可 lines=1200/mm,必须写单位) | 刻线平行于局部 x 轴;近轴量按 0 级 |
| Zernike Standard Sag / Zernike Fringe Sag:Extrapolate、Par 1–8、Zernike Decenter X / Y、Number of Terms、Norm Radius、Zernike 1、2 … | type=zernike / type=zernike_fringe,extrapolate=0(不写 = 1)、a2= … a16=、zdx= zdy=、norm=、z1= z2= …(基底 R、k 同偶次非球面) | Zernike 系数是长度(mm);Standard 的序号与归一同 Zernike Standard Coefficients(Noll、单位圆上 RMS = 1,与 lb zernike、ZERN 操作数同一套),最多 z231;Fringe 不归一、最多 z37。Zernike 项不进近轴量与 Seidel(只按基底,I-ZERN-PARAXIAL)。变量 var z5@3。zmx 的 SZERNSAG / FZERNSAG 导入导出(PARM 0 / 9 / 10 的含义按 Zemax 手册,待用 Zemax 核对) |
| Comment | comment="..." | |
| Radius | R= | 也可 C=(曲率) |
| Thickness | T= | |
| Material | glass= | 精确牌号;MIRROR;model(nd, vd) |
| Clear Semi-Dia | 自动;semi= 固定 | 自动值用实际光线(各视场×各波长光瞳边缘,局部坐标最大径向高度);不挡光 |
| Surface Properties › Aperture | aperture=circular(min, max) / obscuration(…) / rectangular(xh, yh) / float,偏心 dx= dy= | 挡光;zmx 的 CLAP / OBSC / SQAP / FLAP / OBDC |
| Coordinate Break(Par 1–6) | type=coordbreak dx= dy= tx= ty= tz= order= | |
| Surface Properties › Tilt/Decenter(单面偏心倾斜) | 本面前后各一个 type=coordbreak(面前的变换、本面、面后的变换,厚度在面后的变换之后走) | zmx 导入时自动展开,面号随之后移 |
| Conic | k= | |
| Par 1..8(EVENASPH) | a2= a4= a6= … | 按幂次命名,Par1 = a2 |
| Extended Odd Asphere(XOSPHERE):Norm Radius / Coeff on p^1… | type=oddasph a1= a2= a3= …(aᵢ = Aᵢ / normⁱ,同一个面) | zmx 导入导出;超过 r⁸ 的奇次 / r¹⁶ 的偶次非球面导出成 XOSPHERE |
| 单元格求解类型 Variable | var R3 T6 a4@5 p2@3 z5@4 | |
| MFE 的 SUMM / DIFF / PROD / DIVI / MAXX / MINN / ABSO / SQRT 组合 | op EXPR expr="…"(向量化表达式,可直接调用操作数,见 optimization.md「表达式」) | 用户自定义操作数(ZPLM / UDOP)🚧 |
| Glass Solve › Model(Vary Index / Vary Abbe) | glass=model(nd, vd) + var nd@3 vd@3 | 没写上下界时 nd 1.40–2.10、vd 15–100 |
| 模型玻璃换成目录玻璃(Glass Substitution) | lb glass-substitute(--reoptimize 换完再优化) | 按 (nd, vd) 距离取最近牌号 |
| 玻璃目录的 Status / Relative Cost | lb materials、lb glass、lb glass-map 的供货状态与相对价格 | 以设计实际取数的目录为准(AGF 优先于随包材料库,材料库没有价格);停产的 lb check 提示 W-GLASS-OBSOLETE |
| 目录玻璃换成另一厂商的等效牌号 | lb glass-replace --vendor CDGM(--refocus / --reoptimize) | 按 (nd, vd) 距离,一样近再比供货状态、ΔPgF、dn/dT、膨胀与价格,跳过停产;报改前改后的像质、质量、价格 |
| 单元格求解类型 Pickup | R=pickup(源面, scale=, offset=) | R / T / k / aN(非球面系数,如 a4=pickup(2, scale=-1);源面和本面都是非球面) |
| Glass Solve › Pickup | glass=pickup(源面) | 照搬源面的面后介质(解析时就换好,多组态里跟着源面);源面不能是坐标断点;源面或本面的模型玻璃变量暂不能同用 |
| Marginal Ray Height | T=solve(marginal_height, h) | |
| Chief Ray Height | T=solve(chief_height, h) | |
| Marginal Ray Angle | R=solve(marginal_angle, u) | u 是全局斜率 dy/dz;反射镜上也能解(反射镜之后按全局斜率是推断,待 Zemax 核实) |
| Chief Ray Angle | R=solve(chief_angle, u) | 同上 |
| F Number | R=solve(fnum, F) | 边缘光线离开本面后会聚、|u′| = 1/(2F);反射镜上也能解(偶次反射已与 Zemax 存的结果核对过;奇次反射之后,如单个凹面镜,是推断,待 Zemax 核实) |
| Quick Focus(工具) | T=solve(focus) | 常开的最佳焦点 |
| Edge Thickness | T=solve(edge_thickness, 边缘厚度, 径向高度) | 径向高度处 T + 下一面矢高 − 本面矢高 = 目标(矢高沿 y 取);不写径向高度 = 本面的固定 semi(Zemax 径向高度 0 用半口径;半口径自动时还不支持) |
| Position | T=solve(position, 长度, 参考面) | 参考面顶点到下一面顶点的距离 = 长度;参考面在本面之前或就是本面(参考面在后的写法语义没核实,暂不支持) |
| Aplanatic | R=solve(aplanatic) | 边缘光线 u′/n′ = u/n(本面不产生球差、彗差、像散);只用于折射面 |
| Concentric of Surface | R=solve(concentric_surface, 参考面) | 曲率中心落在参考面的顶点 |
| Concentric with Radius | R=solve(concentric_radius, 参考面) | 与参考面的曲率中心重合(参考面是平面时本面也是平面) |
| 其余 solve(Marginal / Chief Ray Normal、Element Power、Optical Path Difference、Semi-Diameter Pickup、ZPL Macro …) | 🚧 | zmx 导入时按数值 |
System Explorer
| Zemax | .lens |
|---|---|
| Aperture Type:Entrance Pupil Diameter / Image Space F/# / Object Space NA / Float By Stop Size | aperture EPD 10 / aperture FNO 4 / aperture NA 0.1 / aperture float |
| Fields:Angle / Object Height / Paraxial Image Height / Real Image Height | field angle … / field object_height … / field paraxial_image_height … / field real_image_height … |
| Field Weight / VDX VDY VCX VCY | w= vdx= vdy= vcx= vcy= |
| Fields › Normalization:Radial / Rectangular | 默认径向;矩形写 norm=rect(写在任一 field 行上,如 field angle (0, 0), (10, 7.5) norm=rect):Hx 按最大 |x| 视场、Hy 按最大 |y| 视场归一化(zmx FTYP 第 5 个数,导入导出) |
| Wavelengths + Primary | wave F, d*, C 或 wave 0.55* |
| Material Catalogs | catalogs SCHOTT, CDGM。zmx 的 GCAT 里带版本号的库名(用户当年装的那一版 AGF,如 CDGM-ZEMAX201806、CDGM20160415、CDGM-202111):有同名的 AGF(agf 指向的文件或 Glasscat 目录里的)就用它;没有时「厂商名 + 以 -、_ 或数字开头的后缀」按该厂商的当前库查,牌号仍精确匹配,并提示 W-CATALOG-VERSION(那一版的数据可能略有不同)。库名原样保留,导出回 zmx 还是它 |
| 加载 .AGF 玻璃库 | agf "glass/SCHOTT.AGF"(单个文件:该厂商排在 catalogs 之前查找);agf "C:/…/Glasscat"(整个目录:按 catalogs 顺序,与 GCAT 相同) |
| Ray Aiming:Off / Paraxial | ray_aim off / ray_aim real(或 robust,更能容忍个别被挡的光线):都迭代瞄准光阑、光阑大小按近轴定,相当于 Zemax 的 Paraxial |
| Ray Aiming:Real(光阑大小按实际边缘光线定) | ray_aim real_stop:轴上视场的实际边缘光线在物方正好满足孔径(EPD/2、物方 NA),它在光阑上的高度就是光阑半径;浮动孔径时与 Paraxial 相同。zmx 的 RAIM(第 2 个数)0 / 1 / 2 导入成 off / robust / real_stop,导出反过来 |
| Aperture › Telecentric Object Space | aperture NA 0.1 telecentric 或 aperture float telecentric(物距有限、视场非角度,孔径只能是 NA 或 float;zmx FTYP 第 2 个数)。光阑正好在前组的像方焦面上(入瞳在无穷远)时入瞳直径 / 位置记 inf、像方 F/# 不适用,其余一阶量照常 |
分析
| Zemax | LensBench | 状态 |
|---|---|---|
| System Data(EFFL、BFL、F/#、ENPP、EXPP、TOTR…) | lb paraxial;口径同 Zemax(像方 F/#、入瞳 / 出瞳直径取正,总长按 Total Track),与 Zemax 的 System Data 核对过 | ✅ |
| Cardinal Points | lb paraxial 的「基点」表(主波长):物方 / 像方的焦距、焦点、主点(主平面)、节点、负主点(反主平面)、负节点;同 Zemax 默认的起止面(第 1 面 → 像面):物方位置相对第 1 面顶点、像方位置相对像面顶点,沿光轴、向右为正,物方焦距 −n/φ、像方 n′/φ;像方不是空气时节点不在主点上。按近轴矩阵算,还没与 Zemax 的报告逐项核对 | ✅ |
| Standard Spot Diagram | lb spot(RMS/GEO,µm)、lb spot-diagram(图) | ✅ |
| Geometric Image Analysis(点光源,看能量分布) | lb spot-density(RMS、99.5 % 能量半径);lb plot x.lens spot_density(密度伪彩) | ✅ |
| Single Ray Trace | lb ray Hx Hy Px Py | ✅ |
| 2D Layout | lb layout(PNG) | ✅ |
| Prescription Data | lb show | ✅ |
| Ray Fan | lb ray-fan(µm,相对主波长主光线) | ✅ |
| OPD Fan | lb opd-fan(波长) | ✅ |
| Wavefront Map / Interferogram | lb wavefront --field 3(RMS、P-V);lb plot x.lens wavefront(伪彩 + 干涉图) | ✅ |
| Image Simulation | lb image-sim(patch:Strehl、垂轴色差;full:畸变、相对照度);lb plot x.lens image_sim | ✅ |
| Grid Distortion | lb grid-distortion(最大畸变、SMIA TV 畸变);lb plot x.lens grid_distortion | ✅ |
| Through Focus MTF | lb through-focus-mtf [频率](各视场最佳焦面);lb plot x.lens through_focus_mtf | ✅ |
| FFT MTF vs. Field | lb mtf-vs-field [频率…];lb plot x.lens mtf_vs_field | ✅ |
| Relative Illumination | lb relative-illumination(最低值、有效 F 数);lb plot x.lens relative_illumination | ✅ |
| Diffraction / Geometric Encircled Energy | lb encircled-energy(50 / 80 / 90 % 能量半径);lb plot x.lens encircled_energy | ✅ |
| Encircled Energy › Type: Ensquared | lb ensquared-energy(50 / 80 / 90 % 能量半宽,--method geometric、--ref centroid);lb plot x.lens ensquared_energy;横轴是正方形的半宽 | ✅ |
| Geometric MTF | lb geometric-mtf [频率…](--grid、--wave、--mult 乘衍射极限);lb plot x.lens geometric_mtf;与 GMTA 同一份实现,默认不乘衍射极限(Zemax 分析的默认是乘,--mult 对应) | ✅ |
| Encircled Energy › Type: X Only / Y Only | 暂无 | 🚧 |
| FFT PSF / FFT PSF Cross Section | lb psf --field 3(Strehl、峰值位置、艾里半径);lb plot x.lens psf(伪彩 + 剖面,scale=log);默认复色,--wave k 单色 | ✅ |
| Huygens PSF / Huygens PSF Cross Section | lb huygens-psf --field 3(--sampling 光瞳采样、--pixels 像面网格、--delta 像素间距 µm);lb plot x.lens huygens_psf;像素在实际像面上(倾斜 / 弯曲像面) | ✅ |
| Glass Map | lb glass-map(--catalogs all);lb plot x.lens glass_map;桌面端悬停读牌号 | ✅ |
| Sag Table | lb sag 3(--num);lb plot x.lens sag --view "surface=3";BFS 取过顶点与边缘的球 | ✅ |
| Full-Field Aberration / RMS Field Map | lb field-map(--area sensor、--data wavefront);lb plot x.lens field_map | ✅ |
| RMS vs. Field(Spot Radius / Wavefront) | lb rms-field(--data wavefront、--ref chief、--num、--rings、--arms);lb plot x.lens rms_field;高斯求积,同 RSCE / RWCE(臂数默认 2 × 环数,方位角同 Zemax) | ✅ |
| Zernike Fringe / Standard Coefficients | lb zernike --field 3(--kind standard、--terms、--grid);lb plot x.lens zernike;系数单位波长,相对主光线参考球面 | ✅ |
| Huygens MTF | lb huygens-mtf 20 40(--sampling 光瞳采样);lb plot x.lens huygens_mtf;在实际像面上算,像面倾斜 / 弯曲时与 FFT MTF 不同;复色合成与 FFT MTF 同一口径 | ✅ |
| FFT MTF | lb mtf [频率…];复色同 Zemax:各波长的复数 OTF 按权重相加再取模,参考主波长主光线(垂轴色差计入);含复色衍射极限 | ✅ |
| Field Curvature / Distortion | lb field-curvature;畸变默认 F-Tan(θ),--distortion ftheta 为 F-Theta(f·θ,f 为近轴焦距)、cal_ftheta 为 Cal. F-Theta(最小二乘定焦距,同 DISC),F-θ 两种只用于物在无穷远;在像面局部坐标里算 | ✅(Cal. F-Tan(θ) 🚧) |
| Seidel Coefficients | lb seidel(S1…S5、C1、C2,W040…);操作数 SPHA / COMA / ASTI / FCUR / DIST 按 Zemax 的波像差系数(波长)计,旧文件里这几个操作数的目标值要换算,打开时提示 I-OP-SEIDEL-W | ✅ |
| Strehl(Huygens/FFT PSF) | lb strehl | ✅ |
| Chromatic Focal Shift | lb focal-shift;lb plot x.lens focal_shift | ✅ |
| Longitudinal Aberration | lb longitudinal;lb plot x.lens longitudinal | ✅ |
| Lateral Color | lb lateral-color;lb plot x.lens lateral_color | ✅ |
| Through Focus Spot Diagram | lb through-focus;lb plot x.lens through_focus | ✅ |
| Footprint Diagram | lb footprint 4 / lb footprint all;lb plot x.lens footprint | ✅ |
| 单个操作数的值(MFE 的 Value 列、ZPL 的 OPEV) | lb calc "OPDC(wave=2, Hy=1, Py=1)"(向量化,如 Hy=0:0.25:1) | ✅ |
| 操作数 PARX / PARY / PARA / PARB、CENX / CENY、TRAC、OSCD、DISC、GMTA、MNSD / MXSD | op PARY 3 Hy=1 Py=0.5(近轴光线:边缘光线与主光线线性叠加)、op CENY field=3(光斑质心,同 RSCE 的取样)、op TRAC Hy=1 Py=1(相对质心,质心同默认评价函数)、op OSCD(正弦条件偏离,Conrady / Welford 的 OSC′)、op DISC <= 0.5(校准 F-θ 畸变,最小二乘定焦距)、op GMTA freq=30 field=2 >= 0.5(几何 MTF,不乘衍射极限)、op MNSD 1..6 >= 3(半口径边界);口径与参数见操作数参考;zmx 导入导出(CENX / CENY、OSCD、DISC、GMTA 的参数排法按手册推断,未用 Zemax 文件核对);优化时用到它们的设计整次走 Python | ✅ |
| 操作数 GTCE | op GTCE 1:面后玻璃的线膨胀系数(10⁻⁶/K,厂商目录 −30…+70 °C 段;空气、反射镜、模型玻璃为 0),热补偿设计配平两片玻璃的膨胀;zmx 导入导出(Surf) | ✅ |
| Materials Catalog(查牌号) | lb glass N-SF* --catalogs SCHOTT | ✅ |
| System Explorer › Afocal Image Space(与 Units › Afocal Mode Units) | afocal image [unit=mrad]:点列图、光扇、RMS 弥散斑、TRAX / TRAY / TRAR / TRAC / RSCE / RSCH、默认评价函数按角度(像方方向余弦之差,单位 urad / mrad / rad / arcsec / arcmin / deg),波前类参考出瞳处的平面波,MTF 按 cycles/mrad,场曲按屈光度,畸变按像方主光线角;lb paraxial 给角放大率(op AMAG);按长度定义的分析拒算;zmx 的 FTYP 第 7 个数与 UNIT 第 6 个字段导入导出,Angular Radius 型默认评价函数导入成 default angular | ✅(角度用方向余弦之差、场曲的符号与参考面等按手册与几何定,未用 Zemax 实测核) |
| Optimization Wizard(默认评价函数) | default spot centroid rings=3 arms=6 …;Obscuration → obscuration=0.33;总权重(π × 视场 / 波长权重均值)与求积方位角同 Zemax | ✅ |
| Local Optimization(DLS) | lb optimize(Levenberg-Marquardt) | ✅ |
| Hammer | lb optimize --mode hammer --seconds N | ✅ |
| Save/Load Merit Function(.MF) | lb mf-export / lb mf-import(也认 Zemax 的文本 .MF;zmx 内嵌的评价函数随 lb import-zmx 一起导入、随 lb export-zmx 一起写回);写给 Zemax 时只写 Zemax 有对应操作数的行,op EXPR 等 LensBench 独有的不写并列出 | ✅ |
文件
| Zemax | LensBench |
|---|---|
.zmx 导入 | lb import-zmx x.zmx(自有解析,支持 UTF-8/UTF-16);曲率、厚度、二次曲面、非球面系数的变量标记(CURV 的类型 1、VDSZ、VCON、VPAR)→ var,边缘 / 主光线角度、F 数、齐明、同心、pickup → solve,厚度的边缘光线高度 solve(MAZH)→ T=solve(marginal_height, h)、主光线高度 solve(CHZH)→ T=solve(chief_height, h)、边缘厚度 solve(EDGE)→ T=solve(edge_thickness, …)(构建后与 Zemax 存的数值核对,对不上的固化);厚度 pickup(PZUP)、玻璃 pickup(GLAS 的求解类型 2)、二次曲面系数 pickup(PKUP)、非球面系数 pickup(PPAR)→ pickup(先核对文件里的数值);其余 solve 只取数值并提示。文件里的牌号在自带材料库里找不到(多是停产牌号),或 GCAT 里带版本号的库名在本机 Zemax 的 Glasscat 里有同名的那一版 AGF 时,自动在 .lens 里加一行 agf "<本机 Glasscat>"(明写在文本里,精确匹配,提示 I-ZMX-GLASSCAT);没解析的面指令合成一条提示 |
.zmx 导出 | lb export-zmx x.lens x.zmx(曲率的角度 / F 数 / 齐明 / 同心 solve、±1 倍曲率 pickup、厚度 pickup、厚度的边缘光线高度 / 主光线高度 / 边缘厚度 solve、玻璃 / 二次曲面系数 / 非球面系数的 pickup、曲率 / 厚度 / 二次曲面 / 非球面系数 / 衍射面相位项 / Zernike 系数的变量原样写出(不带上下界,Zemax 的变量没有上下界);评价函数、多重结构、公差一起写出;其余 solve 按当前值固化、模型玻璃的 nd / vd 变量不写,并提示) |
导出时默认在旁边附一张 x_zemax_check.md / .csv:「这个设计在 Zemax 里应该看到的数」——System Data(焦距、后截距、 像方 F/#、入瞳 / 出瞳、总长、近轴放大率)、Standard Spot Diagram 各视场 RMS、FFT MTF(10 / 20 / 30 cycles/mm 各视场 T / S)、 最大畸变、Seidel 各项总和,每行写明在 Zemax 哪个窗口看、单位与 LensBench 证据 id,末尾列出取样设置(Ray Density、 Sampling、光线瞄准、玻璃库版本)。在 Zemax 里打开导出的 .zmx 逐项看,半分钟就能核完。--no-check 不写这张表。