布尔CAD(Boolean CAD)



布尔CAD物体通过对其它物体进行的一系列布尔运算进行定义。布尔CAD物体可通过添加、减去以及与其它CAD物体相交而形成非常通用的形状。例如,可以通过导入镜头卡座的STEP文件,然后从卡座中减去圆柱体体积来创建一个带孔的镜头卡座。通过对其它物体执行连续的布尔运算,可以创建许多复杂的物体。

有关OpticStudio中原生物体的布尔运算,请参阅原生布尔(Boolean Native)物体。除非父物体是导入的CAD零件,否则使用原生布尔物体进行光线追迹的效率比布尔CAD物体要高多达10倍。

布尔运算是通过将每个组件物体转换为一个基于NURBS表示法的物体进行的,然后进行一系列的布尔连接和组合操作形成最后得到的物体。为此,布尔CAD物体具有与"导入"物体相同的注意事项;有关导入物体的更多注解,参阅"CAD零件:STEP/IGES/SAT(CAD Part: STEP/IGES/SAT)"。从具有高精度表示法的OpticStudio原生物体转换为NURBS表示法时,可能会损失一些精度;这不是OpticStudio的局限,而是NURBS表示任意曲面时所固有的局限。通常,可以根据需要使用下面描述的"样条"和"公差"参数提高精度。当需要极高光学精度时,用户应验证布尔CAD物体是否追迹到合适的精度。

布尔CAD物体通过22个参数定义和一个字符串定义所需的布尔运算:

参数# 描述 面名称 面#
1 样条可控制从OpticStudio格式转换为NURBS格式时用来将样条拟合到非球面的点数。样条值为整数代码,其中0 = 4个点,1 = 8个点,2 = 16个点,3 = 32个点,4 = 64个点,5 = 128个点,6 = 256个点。样条设置越高,一些物体的精度越高,但代价是创建物体、渲染和光线追迹的速度较慢。 NA NA
3 模式。模式可控制设置时间和光线追迹速度之间的平衡。对快速设置时间和较慢光线追迹使用模式1,对适中的设置时间和适中的光线追迹使用模式2,对慢速设置时间和快速光线追迹使用模式3。通常在分析设置过程中使用模式1,为分析追迹大量光线使用模 式3。 NA NA
4-6 X、Y、Z体元编号。体元的名称源于"体像素(volume pixels)"。体元是一个三维矩形,定义了一些由输入物体占据的全部体积的比例。体元技术允许通过预先计算哪些物体、或物体的哪些部分位于所指定体元内而快速追迹光线。进入体元空间的光线可能只与全部体元内的某些子集相交;因此只需检查这些体元,以查看光线与物体是否可能相交。体元数量越大,设置时间越长,但光线追迹越快。通常需要做一些试验才能确定最佳体元数量。如果没有其它明显更好的值,则使用5表示三个值。 NA NA
7-12 未使用。 NA NA
13-22 用于定义物体A、B和C等的物体编号。请参阅下面的详述。 NA NA

定义父物体

参数13-22用于定义哪些"父"物体将被组合。参数13用于定义哪个物体是物体A,参数14用于定义哪个物体是物体B,等等。没有必要定义比布尔运算所需物体更多的物体。如果只有两个物体需要组合,则只需定义物体A和物体B。任何未使用的物体可以将其物体编号设置为零。在NSC编辑器中,所有已定义的物体必须在布尔CAD物体之前。已定义物体的列表应始终从物体A开始,然后接着是物体B等等,例如将物体A的物体编号设置为零,接着后续在列表中定义一个非零的物体编号,这样的做法是无效的。父物体不能是光源或者探测器。

布尔运算

一旦所有的父物体被定义,布尔运算就由"注解(Comments)"栏中设置的"控制字符串(Control String)"定义,格式如下:

object oper object [oper object ]...

"object"参数是一个字母,例如A、B或C,与所定义的物体对应。"oper"是一个单字符运算符。支持下列运算符(在逻辑示例中介于物体A和B之间):

+ 将两个物体组合起来(逻辑A OR B)。

- 从第一个物体中减去第二个物体(逻辑A AND NOT B)。

& 计算两个物体的交集(逻辑A AND B)。

^ 生成一个物体的一部分,该部分属于某个物体或其它物体的一部分,但不同时属于两个物体(逻辑A XOR B)。

$ 从第二个物体中减去第一个物体(逻辑NOT A AND B)。以下是一些控制字符串的示例:

A+B

E+A-B-C

F+B&E-A

所有的运算符都按从左到右的顺序执行。没有圆括号等次序优先级。每个布尔运算的执行都以其运算符左边的先前运算结果为基础,运算符右侧列出的物体是第二个参数。注意,$运算符可以用于从第二个物体中减去第一个物体。这对于组合物体、然后从第三个物体中减去该组合很有用。例如,要创建物体(A - B),然后从物体C中减去这个组合,就可以用到"A - B $ C "。

放置物体

所得到的物体的局部坐标系与控制字符串中所列的第一个物体的局部坐标系相同。全局物体位置和方向按照与所有NSC物体相同的方法通过物体位置和倾斜参数来设置。

如果不需要父物体,可使用父物体上的"光线忽略这个物体"和"不绘制物体"设置(参阅"类型选项卡(Type Tab)"和"绘制选项卡(Draw Tab)")完成操作。即使不绘制父物体或不进行光线追迹,布尔CAD物体仍然会被创建。

布尔CAD物体的面编号和性质通过父物体的面编号和性质定义。来自父物体的所有面属性都被复制到布尔CAD物体相应的面上。要查看任一物体的每个面,可以使用NSC物体查看器(参阅"NSC物体查看器(NSC Object Viewer)")。任何物体编号唯一的表面总数都会受到限制,有关详细信息,请参阅"物体表面(Object faces)"。

布尔CAD物体一个典型的优点是得到的物体仍然是由父物体参数性质定义的。改变任何一个父物体参数也将改变布尔CAD物体。如果不需要此功能,可以将布尔CAD物体导出为IGES或STEP文件(有关CAD导出的更多信息,请参阅"CAD文件(CAD Files)"),再使用"CAD零件:STEP/IGES/SAT物体"(参阅"CAD零件:STEP/IGES/SAT(CAD Part: STEP/IGES/SAT)")进行导入,然后即可以删除父物体。

下一部分: