概述

这篇文章介绍了如何将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物体

CAD物体结构可能十分复杂,一根光线可能会在物体中产生多次反射、折射或散射等相互作用。因此,我们使用非序列光线追迹来描述光线与物体之间的相互作用。在序列系统中,我们也可以使用混合模式来进行类似的非序列光线追迹。

OpticStudio支持四种静态CAD文件格式:STL、IGES、STEP和SAT(如SLDPRT和ZPO这样的动态CAD格式,不在本文的讨论范围之内)。在四者之中,只有STL格式是用小的三角形表面连接在一起,来近似表示物体模型的曲面,其它三种格式会使用平滑而连续的表面进行建模。物体上的小平面 (Facets) 只用于在屏幕上显示。因此,在连续且光滑的CAD物体表面进行的光线追迹在CAD模型精度下是精确的,尽管我们使用小平面来绘制物体。

需要特别注意的是,虽然OpticStudio支持由实际的小平面组成的CAD物体模型,但是在多数时候,我们见到的由小平面组成的CAD物体仅仅是显示成这样,而光线追迹的精度仍会以实际表面的精度为准。

STL格式

STL (Stereolithography Tessellation Language) 格式在3D打印技术中应用广泛,它能够简单地对常见的三维形状进行建模。它利用三角形的鳞甲面来描述物体模型,即一系列小的三角形面拼合在一起来近似表示物体模型的表面。

您可以从以下链接中查看有关STL格式的概述。

http://www.mmsonline.com/articles/019704.html

STL文件中的每一个小三角面都是由它三个顶点的 {x,y,z} 坐标以及表面法向量来定义的。下面是STL格式的示例文件的前几行代码,它由AutoCAD软件生成:

solid AutoCAD
facet normal 0.0000000e+000 0.0000000e+000 1.0000000e+000
outer loop
vertex 6.0000000e+000 4.0000000e+000 6.0000000e+000
vertex 6.0000000e+000 6.0000000e+000 6.0000000e+000
vertex 4.0000000e+000 6.0000000e+000 6.0000000e+000
endloop
endfacet
facet normal 0.0000000e+000 0.0000000e+000 1.0000000e+000
outer loop
vertex 6.0000000e+000 4.0000000e+000 6.0000000e+000
vertex 4.0000000e+000 6.0000000e+000 6.0000000e+000
vertex 4.0000000e+000 4.0000000e+000 6.0000000e+000
endloop
endfacet

(需要注意,OpticStudio会同时导入STL格式的ASCII版本和二进制版本)STL格式的小平面特性决定了它非常适用于建模反射镜和棱镜。然而它不擅长表示光滑的曲面,这是因为使用小三角形鳞甲面来表示曲面的方式会降低光线追迹的精度。

STL格式的CAD物体需要使用物体类型“CAD零件:STL (CAD Part: STL)”进行导入。后缀名为 .stl的文件必须保存在Zemax根目录下的objects文件夹中的CAD Files文件夹下。

当导入完成后,您可以像设置其他物体位置那样来设置CAD物体的位置。

如下图所示,我们可以用STL格式精准地模拟由多个平面构成的棱镜,但对于球体来说,STL格式只能近似地模拟。

在本例中,屏幕上显示的小平面就是实际从STL物体文件中生成的,并且光线会直接与这些小平面接触。

IGES格式

IGES (The Initial Graphics Exchange Specification) 是美国的国标格式,建立这一格式的初衷是在不同CAD软件之间实现便利的数据传输。OpticStudio目前支持5.3版本的IGES标准,想要了解更多有关IGES的信息,请参阅以下链接。

http://www.nist.gov/iges

IGES物体需要保存在Zemax根目录下的objects文件夹中的CAD Files文件夹下,并且需要使用物体类型“CAD零件:STEP/IGES/SAT (CAD Part: STEP/IGES/SAT)”进行导入。

下图所示物体是由SoildWorks软件导出的IGES格式模型:

现在,Solidworks输出这个物体的格式是任意的,很可能是NURBS格式,在屏幕中物体是通过小平面来显示的,而实际的IGES物体的结构更加复杂:

想要了解更多有关NURBS的信息,请参阅如下书籍:The NURBS Book, Second Edition, by Les Piegl and Wayne Tiller, Springer-Verlag, ISBN 3-540-61545-8.

需要注意的是,OpticStudio使用这些小平面只有一个原因:仅用于在屏幕上绘制物体。IGES格式的物体在内部计算时仍会采用光滑且精确的物体模型,而不是采用像STL物体那样的小平面。

STEP格式

STEP (Standard for the Exchange of Product Model Data) 是一个综合的ISO标准 (ISO10303) 格式,它用来描述如何表示和交换数字产品的信息。

对于OpticStudio的用户来说,选择IGES格式还是STEP格式都没有任何问题。OpticStudio可以很好地处理这两种格式。因此在选择格式时,您可以根据CAD软件导出模型的质量来决定。IGES是较旧的格式,一些CAD的供应商会使用他们自己的导出程序,因此根据供应商不同,数据可能存在少许偏差。而STEP格式则较新,大多数CAD供应商都会使用像Step Tools这样的内置库程序进行导出,因此CAD文件在STEP格式进行数据交换时能够保持更好的一致性。

有关STEP格式和Step Tools的详细信息请参考以下链接:

http://www.steptools.com/

在OpticStudio中,STEP格式物体导入的方法与IGES格式物体的方法完全相同。

SAT格式

SAT格式是Spatial Technologies公司采用ACIS (Andy CharlesIan’s System) 几何建模引擎开发出来的。它可以直接表示ACIS建模引擎的内部数据结构。也就是说,当您在一个以ACIS为基础的CAD软件中加载SAT格式的文件时,软件不会对这个文件进行编译,而是直接使用文件中的数据。因此,SAT格式本质上不是一个用于CAD数据交换的格式,它本身就是一个CAD格式。

所以如果您使用基于ACIS的CAD软件,那么您可能会使用到SAT格式的文件,否则您可能不会接触到SAT格式的文件。此外,SAT格式文件可以平滑且连续的表示物体,其导入OpticStudio的方法也与导入IGES文件相同。

CAD物体的属性和参数

您可以在非序列元件编辑器的参数数据表格或物体的属性窗口中修改和控制已导入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导出程序得到不同的物体表示方法,可以使光线追迹速度或者物体尺寸产生几个数量级的差异。

总结

导入CAD物体功能赋予了OpticStudio很高的通用性,它可以使OpticStudio充分考虑光机元件的各种效应,这在进行杂散光分析时尤为重要。同时,在许多照明系统中,导入CAD物体功能也非常重要,例如汽车元件检测等。

对CAD文件导入格式的选择主要取决于您使用的CAD软件。STL格式适合于本身就是由多个平面组成的物体,或在3D打印的应用场合下使用。IGES和STEP格式是CAD数据交换的标准格式,选择哪一种格式主要取决于CAD软件导出的物体模型的质量。如果您使用的是基于ACIS引擎的CAD软件,那么建议您使用SAT格式导入CAD文件。

本文来自公众号ZemaxChina,光行天下为授权转载,推荐关注!

+ 扫一扫,关注光行天下公众号,目前已有1.49万人关注!+

广告合作:QQ 9652202 微信号 cyqdesign

光行天下QQ群:23899225,欢迎加入!

光行天下:http://www.opticsky.cn

人才天下:http://hr.opticsky.cn

团购天下:http://tuan.opticsky.cn

rtk采点后如何导入cad_ZEMAX:如何导入CAD物体相关推荐

  1. rtk采点后如何导入cad_【干货】RTK实操视频:工程之星5.0操作攻略!(第五部分)...

    前期回顾:[干货]RTK实操视频:工程之星5.0操作攻略!(第一部分)[干货]RTK实操视频:工程之星5.0操作教程(第二部分) [干货]RTK实操视频:工程之星5.0操作攻略!(第三部分) [干货] ...

  2. rtk采点后如何导入cad_CAD图形如何导入SAP2000中?这些方法赶紧学起来

    使用SAP2000更多的是使用它的分析功能,而建模我们则通过Auto CAD,3DMAX等软件建模,下面我介绍一下怎么把CAD绘制的模型导入到SAP2000 SAP2000作为一个早期的有限元分析软件 ...

  3. rtk采点后如何导入cad_CAD图导入其他软件后显示很小怎么调整?【AutoCAD教程】

    点击蓝色字关注我哟 ☀每天推送CAD软件安装及下载.CAD工具应用.CAD技巧.CAD教程.CAD素材.CAD疑难问题解答等文章 ☀想认识志同道合的朋友一起学习CAD?请加入我们的QQ群 369845 ...

  4. 导入语句 python_Python导入语句说明

    导入语句 python While learning programming and reading some resources you'd have come across this word ' ...

  5. 【SeeMusic】创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | 导入音频 | 导入视频 )

    SeeMusic 系列文章目录 [SeeMusic]下载安装并注册 SeeMusic 软件 [SeeMusic]创建 SeeMusic 工程并编辑相关内容 ( 创建工程 | 导入 MIDI 文件 | ...

  6. sqoop动态分区导入mysql,sqoop 导入数据到hive分区表(外表,内表) 指定分区 指定数据库 指定表...

    sqoop 导入数据到hive 1.1.导入数据到hive分区表(内表),指定分区 创建hive分区表 –hive-database 指定数据库 –table 指定表 –hive-overwrite ...

  7. oracle导出导入emp,oracle导入导出操作

    PS 在11g中执行导入导出时有的选项可能不需要加()! PS2,导入导出命令请在shell下运行非sql/plus环境! ***数据库逻辑备份与恢复** 导出: 导出具体分为:导出表,导出方案,导出 ...

  8. python模块导入_Python模块导入详解

    定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑)去实现一个功能.本质就是.py结尾的Python文件. 包:用来从逻辑上组织模块的(可以放一堆模块在目录下).本质就是一个目录(必须 ...

  9. Sqoop(四)增量导入、全量导入、减量导入

    本文转自:https://www.cnblogs.com/yfb918/p/10858355.html 增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数 ...

最新文章

  1. WMI技术介绍和应用——Event Provider
  2. SSL证书如何工作?
  3. Python应用实战案例-pyspark库从安装到实战保姆级讲解
  4. ocr python opencv_如何使用(opencv/python)来实现OCR处
  5. onmousemove和onmouseout事件的调用,和js使用双引号、单引号的时候应该注意的问题...
  6. Perl正则表达式匹配
  7. 2、Collections操作(自定义类)的各种实现
  8. mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介
  9. cmd命令java出错_Java基础知识_JavaSE_02
  10. 西门子plc软件 linux,西门子PLC编程软件
  11. ffmpeg加马赛克
  12. 关于侵权Sinesafe官方网站,仿冒、抄袭等恶劣行为的公告
  13. python 聊天机器人 中文_ 小智,又一个中文聊天机器人
  14. 二分类最优阈值确定_一文搞懂分类算法中常用的评估指标
  15. iptables icmp-host-prohibited引起的No route to host
  16. 突围AI芯片,中国企业寻找新打法
  17. Google Earth Engine(GEE)下载landsat影像
  18. GPU中的SM和warp的关系
  19. 对抖音流量获取的数据分析
  20. 黑莓来电显示程序BBIPCall1.2.0发布

热门文章

  1. ib什么意思_科普|听说邻居的孩子去了IB学校,IB具体是什么?
  2. 取 java 程序运行的路径_获取Java程序运行的路径 | 获取当前jar包的路径
  3. 【数据结构与算法】算法的空间复杂度
  4. HibernateUtil类(可用于连接多个数据库)
  5. java对象生成的时间_Java基础之一组有用的类——生成日期和时间(TryDateFormats)...
  6. mysql 等于_mysql 不等于 符号写法
  7. java反序列化的原理,java – 反序列化的工作原理?
  8. vsto 外接程序安装成功为什么不显示_为什么说买笔记本一定要带雷电3接口?了解这5点你就明白了...
  9. RabbitMQ的三大交换器详解
  10. 前端后台与接口的问题