4、文件格式与数据转换:Zemax与CodeV支持的文件格式及相互转换方法
在光学设计工作中,Zemax OpticStudio与Synopsys CodeV是两款主流的商用光学设计软件。尽管两者在优化算法、全局搜索能力和像质评价方式上各有千秋,但实际工程项目中,我们经常需要将设计模型从一款软件迁移到另一款软件——例如,客户指定使用CodeV进行公差分析,而团队内部习惯用Zemax做初始结构;或者需要将Zemax中的非球面透镜数据导入CodeV进行鬼像分析。此时,理解两款软件的文件格式差异、掌握可靠的转换路径,并规避转换过程中的数据丢失与口径不一致问题,是联合仿真流程中不可回避的关键环节。本章将系统梳理ZMX、SEQ、LENS、ZBF等核心格式的用途与局限,讲解双向转换的标准操作流程,并通过一个实际案例拆解转换中的典型陷阱与应对策略。
上图展示了Zemax与CodeV之间文件转换的两条主要路径:一是通过软件内置的导入/导出功能直接读取对方格式(如Zemax可直接打开SEQ文件,CodeV可导入ZMX文件);二是借助中间文本格式(如SEQ或自定义TXT)进行数据交换。无论采用哪条路径,转换的核心目标都是保证光学系统的基本参数——曲率半径、厚度、玻璃材料、非球面系数、孔径类型与尺寸、视场与波长设置——在跨软件传递后保持一致。然而,由于两款软件在面型定义、坐标系统、玻璃库命名规则以及优化变量设置上存在差异,直接转换往往无法做到100%保真。因此,理解格式背后的数据映射规则,比单纯点击“另存为”更为重要。
4.1 核心文件格式解析与适用场景
要熟练进行数据转换,首先需要明确各格式的定位。Zemax的原生格式ZMX保存了完整的系统定义,包括镜头数据、优化函数、评价函数、多重结构、非序列组件等全部信息。ZMX文件可以是二进制或ASCII文本形式,但二进制格式不便于外部程序解析。CodeV的SEQ文件则是一种纯文本格式,以关键字(如RDN、THI、GLN、ASP等)驱动,每一行代表一个面或一种属性,结构清晰且易于手工编辑。LENS格式是CodeV早期版本使用的固定列宽文本格式,现在仍被许多老工程师用于快速查看数据,但新版本中已逐渐被SEQ取代。ZBF是Zemax的二进制波前文件,用于保存特定视场和波长的波前相位分布,在导出干涉图或进行衍射分析时使用,但CodeV无法直接读取ZBF,需要转换为文本格式的波前数据。
| 格式名称 | 所属软件 | 文件类型 | 主要用途 | 转换友好度 |
|---|---|---|---|---|
| ZMX | Zemax | 二进制/文本 | 完整光学系统定义,含优化与评价数据 | CodeV可导入,但需注意版本兼容 |
| SEQ | CodeV | 纯文本 | 序列光学系统数据,关键字驱动 | Zemax可直接打开,推荐作为中间格式 |
| LENS | CodeV | 固定列宽文本 | 旧版透镜数据,仅含基本面型参数 | Zemax需手动解析,不推荐 |
| ZBF | Zemax | 二进制 | 波前相位数据,用于衍射分析 | CodeV不支持,需转为文本波前 |
| STEP/IGES | 通用 | CAD实体 | 机械轮廓与装配体,非光学参数 | 用于光机结合,不用于光学设计 |
从表中可以看出,SEQ格式是当前跨软件转换的最佳桥梁。它既保留了完整的光学面型描述,又具有可读性,便于工程师在转换后手动检查或修改。而ZMX虽然也能被CodeV识别,但CodeV对ZMX的解析通常只提取镜头数据,忽略优化函数和评价标准,且对非球面高次项的支持存在版本差异。因此,在实际项目中,我们更推荐将Zemax文件导出为SEQ格式,再导入CodeV;反向转换时,则从CodeV导出SEQ,在Zemax中打开。
4.2 转换操作流程与关键参数映射
无论从哪个方向转换,操作流程都遵循“导出→检查→导入→验证”四步法。以Zemax转CodeV为例,首先在Zemax中打开设计好的ZMX文件,点击“文件”→“导出”→“CodeV格式”,软件会生成一个.SEQ文件。导出前需要确认几个关键选项:是否包含非球面系数(通常选择“高次非球面”以保留所有项)、是否转换坐标断点(Coordinate Break)为CodeV的偏心/倾斜命令、以及玻璃库的映射方式(Zemax的玻璃名称如N-BK7,在CodeV中可能显示为NBK7或直接使用折射率/阿贝数)。导出后,用文本编辑器打开SEQ文件,检查第一行的系统孔径定义(如“DIM 20”表示入瞳直径20mm)和视场/波长设置是否与原始Zemax一致。
核心操作清单(Zemax → CodeV):
- 在Zemax中执行“文件”→“导出”→“CodeV SEQ”。
- 在导出对话框中,勾选“包含非球面系数”和“包含坐标断点”。
- 打开生成的SEQ文件,检查系统孔径(DIM/OBL)、视场(FOV)和波长(WVL)关键字。
- 在CodeV中执行“文件”→“导入”→“Zemax SEQ”,选择该文件。
- 导入后,立即运行“LDM”命令查看镜头数据,核对各面曲率半径、厚度、玻璃名称。
- 使用“CHG”命令检查非球面系数是否完整,特别是偶次非球面的第4、6、8、10项。
反向转换(CodeV → Zemax)的流程类似,但需要额外注意CodeV中特有的“边缘光线高度求解”(如“Solves”中的“Marginal Ray Height”)在Zemax中可能无法自动映射,需要手动重新设置。此外,CodeV的玻璃库包含一些自定义材料(如“N-LASF44”),Zemax中可能没有完全对应的名称,此时软件会提示使用折射率/阿贝数替代,但替代后色散特性可能略有偏差,需在导入后重新优化。
4.3 案例拆解:非球面红外镜头的双向转换与误差修正
某安防镜头项目,设计团队在Zemax中完成了一款8mm焦距、F/1.2的红外双视场镜头,包含两个非球面镜片(偶次非球面,最高10次项),系统总长45mm。客户要求将设计文件交付为CodeV格式,以便其内部进行公差敏感度分析。初始转换后,工程师发现CodeV中的MTF性能与Zemax原始设计相比下降了约12%,且后焦偏移了0.15mm。
排查过程如下:首先,对比SEQ文件中非球面系数,发现Zemax导出的第10次项系数为-2.35E-08,而CodeV导入后显示为-2.35E-08,数值一致,但CodeV默认的非球面公式为z = (y²/R)/(1+sqrt(1-(1+k)y²/R²)) + A4y⁴ + A6y⁶ + A8y⁸ + A10y¹⁰,而Zemax使用相同的公式,理论上无差异。进一步检查发现,问题出在“坐标断点”的转换上——Zemax中用于偏心镜片的坐标断点面在SEQ中被转换为CodeV的“偏心/倾斜”命令,但CodeV的偏心顺序是“先偏心后倾斜”,而Zemax的坐标断点默认是“先倾斜后偏心”,导致镜片空间位置出现微小偏差,进而引起后焦偏移。
解决方案是:在Zemax导出前,将坐标断点的“顺序”属性改为“先偏心后倾斜”,或者导出后在CodeV中手动调整偏心/倾斜命令的顺序。修正后,MTF曲线基本重合,后焦偏差缩小至0.02mm以内。复盘经验:非球面系数本身通常能正确转换,但坐标断点的旋转顺序、以及玻璃库的折射率/阿贝数匹配是误差的主要来源。建议在转换后,使用CodeV的“快速优化”功能(仅允许曲率和厚度变化)进行微调,以补偿微小差异。
风险提示:当Zemax文件中包含“多重结构”(如变焦位置)时,导出SEQ只会保留当前结构,不会自动生成CodeV的“Zoom”命令。若需转换变焦系统,必须在Zemax中逐个结构分别导出,然后在CodeV中手动组合为多重配置。此外,Zemax的“非序列模式”组件(如棱镜、自由曲面)无法通过SEQ转换,只能使用STEP格式传递几何形状,再在CodeV中重新定义光学属性。
4.4 常见误区与总结复盘
在长期的教学与工程实践中,我们总结了以下高频误区,工程师应引以为戒:
- 误区一:忽略玻璃库差异。Zemax使用“N-BK7”而CodeV使用“NBK7”,虽然大多数标准玻璃能自动匹配,但肖特、豪雅等厂商的定制玻璃(如“N-KZFS2”)在CodeV中可能找不到,导致导入失败或折射率偏差。建议在转换前,将自定义玻璃替换为双方共有的标准玻璃,或使用折射率/阿贝数临时替代。
- 误区二:盲目信任自动导入。CodeV导入ZMX文件时,会弹出“是否导入优化函数”的选项,但即使选择“是”,评价函数中的操作数(如MTFT、SPHA)也无法完全映射,因为两软件的操作数语法不同。转换后应重新构建评价函数,而不是依赖自动导入。
- 误区三:忽视口径类型。Zemax的“浮动孔径”与CodeV的“固定孔径”定义不同。Zemax中若使用“自动”口径,转换后CodeV会将其设为“固定”口径,导致后续优化时口径不随视场变化,产生渐晕差异。转换后需手动检查每个面的半口径值,并决定是否改为“自动”或“求解”。
- 误区四:ZBF文件无法直接使用。若需要将Zemax的衍射波前数据用于CodeV的PSF计算,不能直接导入ZBF,而应在Zemax中导出“文本波前”文件(.TXT),包含网格化的相位值,再在CodeV中通过“读入波前”功能加载。
经验总结:文件转换不是简单的“另存为”,而是一次数据映射与校验的过程。建议建立标准操作规范:转换前清理Zemax文件(删除不必要的求解、注释、非激活面),转换后立即进行“三查”——查面型参数、查玻璃名称、查口径类型。对于高精度系统,务必使用MTF或波前图进行对比验证,而不是仅看结构参数。若条件允许,使用CodeV的“Zemax兼容模式”进行直接打开,但此模式仅支持较新版本的ZMX文件,且不保证100%还原。
最后,需要强调的是,无论转换工具如何改进,工程师对光学系统本身的理解才是数据保真的最终保障。当转换结果出现异常时,不要急于修改软件设置,而应从物理光学原理出发,分析是哪个参数在映射过程中产生了歧义。掌握SEQ格式的手工编辑能力,往往能在关键时刻解决自动转换无法处理的特殊问题。