这篇文章介绍了如何将STL、IGES、STEP和SAT等格式的CAD(计算机辅助设计,Computer Aided Design)物体导入到OpticStudio中。
CAD文件的格式一般与您所使用的CAD软件相关,格式种类众多,不同的格式也有各自擅长的领域。如,STL格式是利用三角形网格来表示三维物体的,所以,对于那些原本就是由多个平面围成的物体来说是一个不错的选择,该格式也常应用于3D打印领域。IGES格式与STEP格式在不同的CAD软件中都有良好的兼容性。在二者中做选择时,要看它们当中哪一个的模型导出程序对物体模型的表示方式更适合于您的物体模型。如果您使用基于ACIS引擎的CAD软件,那么推荐您使用SAT格式的CAD文件。
在OpticStudio中导入CAD物体是非常重要的功能,尤其是在对复杂的光机元件进行杂散光分析时,光线会在这类光机元件上发生较为严重的反射和散射效应。导入CAD功能在照明系统中同样重要,例如在汽车仪表盘中,光线可能会入射到一个复杂的光导管之中。OpticStudio的导入CAD物体功能非常灵活且强大,它支持多种常见的CAD文件格式。
CAD物体结构可能十分复杂,一根光线可能会在物体中产生多次反射、折射或散射等相互作用。因此,我们使用非序列光线追迹来描述光线与物体之间的相互作用。在序列系统中,我们也可以使用混合模式来进行类似的非序列光线追迹。
OpticStudio支持四种静态CAD文件格式:STL、IGES、STEP和SAT(如SLDPRT和ZPO这样的动态CAD格式,不在本文的讨论范围之内)。在四者之中,只有STL格式是用小的三角形表面连接在一起,来近似表示物体模型的曲面,其它三种格式会使用平滑而连续的表面进行建模。物体上的小平面 (Facets) 只用于在屏幕上显示。因此,在连续且光滑的CAD物体表面进行的光线追迹在CAD模型精度下是精确的,尽管我们使用小平面来绘制物体。
需要特别注意的是,虽然OpticStudio支持由实际的小平面组成的CAD物体模型,但是在多数时候,我们见到的由小平面组成的CAD物体仅仅是显示成这样,而光线追迹的精度仍会以实际表面的精度为准。
STL (Stereolithography Tessellation Language) 格式在3D打印技术中应用广泛,它能够简单地对常见的三维形状进行建模。它利用三角形的鳞甲面来描述物体模型,即一系列小的三角形面拼合在一起来近似表示物体模型的表面。
您可以从参考资料1中查看有关STL格式的概述。STL文件中的每一个小三角面都是由它三个顶点的 {x,y,z} 坐标以及表面法向量来定义的。下面是STL格式的示例文件的前几行代码,它由AutoCAD软件生成:
solid AutoCAD |
(需要注意,OpticStudio会同时导入STL格式的ASCII版本和二进制版本)STL格式的小平面特性决定了它非常适用于建模反射镜和棱镜。然而它不擅长表示光滑的曲面,这是因为使用小三角形鳞甲面来表示曲面的方式会降低光线追迹的精度。
STL格式的CAD物体需要使用物体类型“CAD零件:STL (CAD Part: STL)”进行导入。后缀名为 .stl的文件必须保存在Zemax根目录下的objects文件夹中的CAD Files文件夹下。
当导入完成后,您可以像设置其他物体 位置那样来设置CAD物体的位置。
如下图所示,我们可以用STL格式精准地模拟由多个平面构成的棱镜,但对于球体来说,STL格式只能近似地模拟。
球面是由三角形网格模拟形成的:
在本例中,屏幕上显示的小平面就是实际从STL物体文件中生成的,并且光线会直接与这些小平面接触。
IGES (The Initial Graphics Exchange Specification) 是美国的国标格式,建立这一格式的初衷是在不同CAD软件之间实现便利的数据传输。
IGES物体需要保存在Zemax根目录下的objects文件夹中的CAD Files文件夹下,并且需要使用物体类型“CAD零件:STEP/IGES/SAT (CAD Part: STEP/IGES/SAT)”进行导入。
下图所示物体是由SoildWorks软件导出的IGES格式模型:
现在,Solidworks输出这个物体的格式是任意的,很可能是NURBS格式(请参阅参考资料3),在屏幕中物体是通过小平面来显示的,而实际的IGES物体的结构更加复杂:
需要注意的是,OpticStudio使用这些小平面只有一个原因:仅用于在屏幕上绘制物体。IGES格式的物体在内部计算时仍会采用光滑且精确的物体模型,而不是采用像STL物体那样的小平面。
STEP (Standard for the Exchange of Product Model Data) 是一个综合的ISO标准 (ISO10303) 格式,它用来描述如何表示和交换数字产品的信息。
对于OpticStudio的用户来说,选择IGES格式还是STEP格式都没有任何问题。OpticStudio可以很好地处理这两种格式。因此在选择格式时,您可以根据CAD软件导出模型的质量来决定。IGES是较旧的格式,一些CAD的供应商会使用他们自己的导出程序,因此根据供应商不同,数据可能存在少许偏差。而STEP格式则较新,大多数CAD供应商都会使用像Step Tools这样的内置库程序进行导出,因此CAD文件在STEP格式进行数据交换时能够保持更好的一致性。
在OpticStudio中,STEP格式物体导入的方法与IGES格式物体的方法完全相同。
SAT格式是Spatial Technologies公司采用ACIS (Andy CharlesIan’s System) 几何建模引擎开发出来的。它可以直接表示ACIS建模引擎的内部数据结构。也就是说,当您在一个以ACIS为基础的CAD软件中加载SAT格式的文件时,软件不会对这个文件进行编译,而是直接使用文件中的数据。因此,SAT格式本质上不是一个用于CAD数据交换的格式,它本身就是一个CAD格式。
所以如果您使用基于ACIS的CAD软件,那么您可能会使用到SAT格式的文件,否则您可能不会接触到SAT格式的文件。此外,SAT格式文件可以平滑且连续的表示物体,其导入OpticStudio的方法也与导入IGES文件相同。
您可以在非序列元件编辑器的参数数据表格或物体的属性窗口中修改和控制已导入CAD物体的属性和参数。这些操作适用于上文提到的全部四种CAD文件格式。
可修改的属性和参数有:
材料 (Material):每个物体仅能定义一种材料。比如,这个咖啡壶是由玻璃罐、塑料盖、塑料手柄、将手柄与罐身连接的铝环,以及将手柄与铝环固定的金属螺丝组成。如果想导入这样一个咖啡壶整体,则需要在CAD软件分别导出这些零件的CAD文件,再把这些文件分别导入到OpticStudio中;或者,可以分解导入的物体,再单独赋予每个子物体相应的光学特性。分离的子物体可以以一个主物体为基准,采用相对参考的方式来确定它们与主物体之间的位置关系,以便整个咖啡壶能够作为一个整体来一起进行移动或旋转。
缩放 (Scale):这是一个无量纲的参数,您可以利用这个参数对物体尺寸进行缩放。
模式 (Mode):它用来调整模型建立的时间与光线追迹的速度。如果模式参数为1,则表示模型建立的时间短但模型的光线追迹速度慢;如果参数值为2,则表示模型建立的时间中等且模型光线追迹的速度也属于中等水平;如果参数值为3,则表示模型建立时间较慢但模型的光线追迹速度较快。一般情况下,在OpticStudio中建立光学系统时使用模式1,而在进行大量光线追迹时使用模式3。需要注意的是,不同的模式只会影响光线追迹的速度和物体初始加载的时间,并不会影响光线追迹的精度。
X,Y和Z像元数 (X, Y, Z Voxels):该参数用来表示使用多少个体元来表示所定义物体的不可见的边界。体元技术允许通过在给定的体元数量下,预先计算物体或物体的一部分,以实现光线的快速追迹。进入一个体元空间的光线只可能与所有体元的一个子集相交;因此只需要判断这些子集体元上是否发生了光线与物体的相交即可。像元数越大,则模型的建立时间越长,但光线追迹的速度越快。通常情况下需要实验几次才能确定合适的像元数。需要注意的是,像元数会影响光线追迹的速度和以及建立物体所需的内存,但同样不会影响光线追迹的精度。
分解文件? (Explode?):该参数表示CAD零件是否已被分解。这个参数是OpticStudio用来表示分解状态的,不需要用户进行设置。如果您想要分解一个CAD物体,可以选择非序列元件编辑器工具栏上的CAD > 分解CAD装配体文件 (Explode CAD Assembly) 来实现。
弦公差 (Chord Tolerance):该选项位于物体属性 (Object Properties) 中的CAD标签中,它只影响物体在布局图中的渲染效果。OpticStudio在渲染物体时,会将物体表面近似表示为多个三角形的鳞甲面,弦公差表示三角形鳞甲面上的点与物体真正的表面之间所允许的最大偏差距离。如果把这个值改小,则会添加更多的三角形面来精细地表示物体表面,但会降低渲染的速度并占用更多内存。如果该值保持默认值0,则OpticStudio会自动根据物体的尺寸选择一个合适的弦公差,以快速地渲染物体的形状。同样的,弦公差的值不会影响光线追迹的计算精度。
所要导入的物体是由多个平面构成时,推荐使用STL格式,而所要导入的物体由光滑连续的表面组成时,推荐使用IGES、STEP和SAT格式。
并不是所有类型的表面形状使用CAD文件格式(例如IGES、SAT、STEP)都可以得到足够的光线追迹精度。对于平面、球体和圆柱体来说,在正确设置的情况下使用CAD格式可以具有很高的光线追迹精度。然而对于高阶的面型来说,CAD格式通常无法高精度地表示这些表面。
例如,对于一个具有r的十六阶项的非球面来说,CAD格式的文件无法准确地对该表面进行描述。在这种情况下,CAD软件一般会使用一条分段的曲线进行近似拟合,这是一个使用多个低阶曲线进行分段拟合的方法。一般使用多个三阶或四阶多项式所对曲面进行近似描述。这样做的精度对于机械设计来说是足够的,但是当进行光线追迹需要曲面精确度在亚波长量级的情况,这样的低阶多项式精度是远远不够的。
这个问题通常出现在我们在OpticStudio中进行高光学精度的表面建模后,使用CAD文件导出该表面,然后再重新导入该CAD文件进行光线追迹的情况。例如,当OpticStudio将内置的非球面以CAD样条曲线的形式导出时,零件的光学精度就会损失。
对于非成像系统中光学元件,以及对机械元件进行杂散光分析时,CAD文件的精度一般满足需求。然而对于成像系统来说,我们需要格外注意导入的CAD零件是否能足够准确地表示您想要的面型。需要注意的是,OpticStudio在进行内部光线追迹时的精度大约在1E-12量级,而CAD物体的精度则要低多个数量级。
对于球面透镜这样的简单物体来说,如果使用CAD格式的文件导入后进行光线追迹,会比使用相同的OpticStudio内置面型进行光线追迹的速度慢很多。因此通常来讲,我们应尽可能使用OpticStudio的内置面型进行建模。导入的CAD物体的光线追迹速度很大程度上取决于文件中对物体形状的表示方法。
对于同一个物体来说,在OpticStudio所支持的CAD格式中也可能有无穷多种表示方式。例如,其中一种有效的表示方法也许只需要几条样条曲线就可以描述一个物体的形状;而不太实用的表示方法则可能需要成百上千条更小的样条曲线来模拟这个物体。虽然从机械建模的角度来看,两种方式都是有效的,而且都能生成相同的物体,但是有庞大数量的样条曲线表面会严重影响光线追迹的速度。唯一的改进的办法是回到CAD文件中,查看有没有更加有效的表示物体的方式。根据我们的经验,通过调整CAD导出程序得到不同的物体表示方法,可以使光线追迹速度或者物体尺寸产生几个数量级的差异。
1. Beard, Tom. "Machining From STL Files." Modern Machine Shop. January 01, 1997. Accessed January 17, 2019. http://www.mmsonline.com/articles/019704.html.
2. CADEX Ltd. 2008. IGES. Accessed 2019. https://cadexchanger.com/iges.
3. Tiller, Wayne, and Les A. Piegl. 1996. The NURBS Book (Monographs in Visual Communication). Springer.
4. STEP Tools, Inc. 2019. What is STEP? http://www.steptools.com/stds/step/step_1.html.
5. Dassault Systemes. 2019. Spatial. https://www.spatial.com/.
ACIS and SAT are registered trademarks of Spatial Corporation.