数值函数(Numeric Functions)
数值函数可以作为数值变量赋值命令的右侧表达式,也可以作为关键字中的参数表达式。数值函数可能不需要参数,也可能需要一个或多个参数。所有的函数均返回单个值。某些函数(如表示主波长的PWAV())返回的值与参数无关,因此不需要提供参数,但圆括号仍然是需要的。
下表中列出了所有ZPL数值函数。如果函数语法为FUNC()形式,则表示不需要参数。FUNC(x)表示需要一个参数,FUNC(x,y)表示需要两个参数,以此类推。
ZPL函数列表
函数 | 参数 | 返回值 |
ABSO(x) | 数值表达式 | 表达式的绝对值。 |
ACOS(x) | 数值表达式 | 反余弦(以弧度为单位)。此函数可用于定义常数pi:π = 2*ACOS(0)。 |
APMN(x) | 有效的表面编号 | 最小半径值。对于支撑杆孔径,表示臂的宽度。对于矩形和椭圆形孔径,表示孔径的x-半宽。 |
APMX(x) | 有效的表面编号 | 最大半径值。对于支撑杆孔径,表示臂的数量。对于矩形和椭圆形孔径,表示孔径的y-半宽。 |
APOI(px, py) | 归一化光瞳坐标 | 光线强度切趾因子。 |
APXD(x) | 有效的表面编号 | 孔径偏心(x)值。 |
APYD(x) | 有效的表面编号 | 孔径偏心(y)值。 |
APTP(x) | 有效的表面编号 | 整数代码,用于描述指定表面上的孔径类型。 |
ASIN(x) | 数值表达式 | 反正弦(以弧度为单位)。 |
ASPR() | (空) | 当前显示图形的纵横比。 |
ATAN(x) | 数值表达式 | 反正切(以弧度为单位)。 |
ATYP() | (空) | 系统孔径类型代码:0表示EPD,1表示F/#,2表示NA,3表示光阑尺寸浮动。 |
AVAL() | (空) | 系统孔径值。 |
CALD(i) | 折射率 | 返回CALLMACRO缓冲区中指定折射率处的数值。请参阅"从宏中调用宏(Calling a Macro from within a Macro)" |
CHZN(x) | 有效的表面编号 | 表面的延伸区。 |
CONF() | (空) | 返回当前结构的编号,介于1和总的多重结构数之间,包括首尾值。 |
CONI(x) | 有效的表面编号 | 指定表面的圆锥系数。 |
COSI(x) | 以弧度为单位的数值表达式 | 表达式的余弦。 |
CURV(x) | 有效的表面编号 | 指定表面的曲率。 |
EDGE(x) | 有效的表面编号 | 指定表面当前净口径或半直径对应的边缘厚度。 |
EOFF() | (空) | 文件结尾标记。如果到达文件结尾,则返回1,否则返回0。仅在执行了关键字READ之后才有效。 |
ETIM() | (空) | 从上个TIMER开始所经过的时间(以秒为单位)。 |
EXPE(x) | 数值表达式 | e的表达式次幂。 |
EXPT(x) | 数值表达式 | 10的表达式次幂。 |
FICL(vec#) | 矢量编号,在1到4之间,包括首尾值。 | 光纤耦合效率。请参阅"使用FICL()函数(Using the FICL() Function)"。 |
FLDX(x) | 有效的视场编号 | 指定视场的X角度或高度。 |
FLDY(x) | 有效的视场编号 | 指定视场的Y角度或高度。 |
FTAN() | 有效的视场编号 | 指定视场的子午角。 |
FTYP() | (空) | 如果当前视场类型是角度(以度数为单位),则返回0;如果是物高,则返回1;如果是近轴像高,则返回2;如果是实际像高,则返回3;如果是经纬角,则返回4。高度单位是镜头单位。 |
FVAN(x) | 有效的视场编号 | 指定视场的渐晕角。该命令已被废弃。请参阅FTAN()。 |
FVCX(x)、FVCY(x) | 有效的视场编号 | 指定视场x或y方向的渐晕压缩因子。 |
FVDX(x)、FVDY(x) | 有效的视场编号 | 指定视场x或y方向的渐晕偏心因子。 |
FWGT(x) | 有效的视场编号 | 指定视场的视场权重。 |
GABB(x) | 有效的表面编号 | 指定表面材料的玻璃库阿贝数。 |
GAUS(x) | 标准差 | 从高斯分布、0均值及指定的标准差中返回一个随机值。 |
GETT(window, line, column) |
要提取的数值的窗口编号、行编号以及列编号。列由空格和制表符分隔。 |
从任何打开的文本窗口中提取数值。该功能可对OpticStudio窗口中显示的任何值进行计算。此函数假定句点(.)为小数点分隔符。要使用Windows设置中当前选择的字符,请使用GETL()。 |
GETL(window, line, column) | 要提取的数值的窗口编号、行编号以及列编号。列由空格分隔。 | 从任何打开的文本窗口中提取数值。该功能可对OpticStudio窗口中显示的任何值进行计算。此函数使用Windows的"区域和语言"设置中定义的小数点分隔符。另请参阅GETT()。 |
GIND(x) | 有效的表面编号 | 指定表面材料的玻璃库d光折射率。 |
GLCA(x) | 有效的表面编号 | 指定表面中心在全局顶点下的x矢量。 |
GLCB(x) | 有效的表面编号 | 指定表面中心在全局顶点下的y矢量。 |
GLCC(x) | 有效的表面编号 | 指定表面中心在全局顶点下的z矢量。 |
GLCM(surf, item) | "面"必须是有效的表面编号,"项"是介于1到12之间的整数。 | 如果项等于1到9,则返回值为R11、R12、R13、R21、R22、R23、R31、R32或R33。如果项等于10到12,则返回值为全局偏移矢量的x、y或z分量。请参阅"全局坐标参考面(Global Coordinate Reference Surface)"。 |
GLCX(x) | 有效的表面编号 | 指定表面中心在全局顶点下的x坐标。 |
GLCY(x) | 有效的表面编号 | 指定表面中心在全局顶点下的y坐标。 |
GLCZ(x) | 有效的表面编号 | 指定表面中心在全局顶点下的z坐标。 |
GNUM(A$) | 任何字符串变量名称 | 如果字符串A$是有效的玻璃名称,如BK7,则GNUM返回玻璃库中对应玻璃的编号。该编号可供关键字SETSURFACEPROPERTY使用,用于定义某个表面的玻璃类型。如果A$没有对应库中的任何玻璃,则GNUM返回0。如果字符串是"MIRROR",则GNUM返回-1。 |
GPAR(x) | 有效的表面编号 | 指定表面材料的玻璃库部分色散系数。 |
GRIN(s, w, x, y, z) | 表面编号、波长编号以及x、y和z坐标 | 返回在波长编号w下,指定表面上对应x、y、z坐标点的折射率。对渐变介质和非渐变介质均有效。 |
GTEM(code) | 对于复选框"代码"的值,使用玻璃替换模板的代码为0,排除数据不全的玻璃的代码为1,标准的代码为11,首选的代码为12,废弃的代码为13,特殊的代码为14,使用相对成本、CR、FR、SR、AR和PR的代码分别为21-26。对于数值,使用相对成本、CR、FR、SR、AR和PR的代码分别为31-36。 | 返回玻璃替代模板中的数据。复选框返回0表示"错误"(未选中),返回任何非0值表示"正确"(选中)。 |
IMAE(seed) | 种子数据值 | 返回几何图像分析效率。请参阅详述"几何图像分析(Geometric Image Analysis)"。如果种子为0,则每次调用IMAE时都将使用相同的随机数。如果种子不为0,则每次调用IMAE时都将使用唯一的随机数。 |
INDX(surface) | 有效的表面编号 | 主波长的折射率。请参阅ISMS。 |
INTE(x) | 数值表达式 | 返回不大于变量的最大整数。 |
ISCS(surface) | 有效的表面编号 | 如果表面不是复合表面,并且其中一个表面是完整表面,则返回0。 |
ISMS(surface) | 有效的表面编号 | 如果指定表面奇数镜面,或者其之后为非镜面,则返回1,否则返回0。 |
LOGE(x) | 正数值表达式 | 以e为底的表达式的对数。 |
LOGT(x) | 正数值表达式 | 以10为底的表达式的对数。 |
LOST(code) | code是1或2,1可表示由于错误而损耗的能量,2表示由于阈值而损耗的能量。 | 在最新NSTR追迹之后损耗的能量。 |
LVAL(A$) | 任何字符串变量名称 | 字符串值。返回字符串A$的浮点值,采用当前用户语言设置来表示字符串的小数分隔符。另请参阅SVAL。 |
MAGN(x,y) | x和y可以是任何实数 | 计算x平方与y平方之和的平方根。 |
MAXF() | (空) |
最大径向视场角度(以度为单位)或者径向物高或像高(以镜头单位表示)。返回值取决于视场是按照角度、物高还是像高来定义的。 视场角注意事项:有关归一化以及最大视场角和最大径向角之间差异的更多信息,请参见"视场类型(Field Type)"。 |
MAXG() | (空) | 当前载入的玻璃数量。 |
MCON(row, config, data) | 从多重结构编辑器提取的行(操作数编号)、结构编号和数据值。 |
提取多重结构编辑器中任意行和结构的数据。类似于MCOP,但MCOP具有提取数据的扩展功能。 如果行号(row)和结构编号(config)均为0,数据(data)值为0、1和2时,MCON分别返回操作数数量、结构数量和当前结构编号。 如果行号(row)介于1和总操作数数量之间,结构编号(config)为0,数据(data)值为0到4时,MCON分别返回指定操作数类型,整数1、整数2、整数3和字符串标记。其中3个整数值分别对应不同操作数的不同参数,例如表面和波长编号。如果操作数数据是字符串值(如玻璃名称),则字符串标记是1,如果操作数数据是数值,则字符串标记是0。 如果行号(row)介于1和总操作数数量之间,多重结构操作数和结构编号(config)是有效的,则MCON返回对应操作数的数值数据或字符串数据。 需注意,在调用MCON之后,MCON返回的所有字符串数据必须通过$buffer命令来提取。例如,以下代码示例将把操作数名称存放在字符串a$中的第一行: dummy = MCON(1, 0, 0) a$ = $buffer() 另请参阅关键字SETMCOPERAND。 |
MCOP(row, config) | 多重结构编辑器的行(操作数编号)和结构编号。 | 提取多重结构编辑器中任意行和结构的数据。结构编号0表示当前结构。另请参阅关键字SETMCOPERAND。 |
MCSD(x) | 有效的表面编号 | 表面的机械半直径。 |
MFCN() | (空) | MFCN更新镜头数据,使评价函数生效,更新评价函数,然后返回当前评价函数值。请参阅OPER。 |
NCON() | (空) | 返回结构的数量。 |
NFLD() | (空) | 返回已定义视场的数量。 |
NOBJ(surface) | 有效的非序列模式表面编号 | 返回非序列模式表面中已定义物体的数量。 |
NPAR(surf, object, param) | surf是表面编号,object是物体编号,param是要返回的值的参数编号。 | 返回非序列模式元件编辑器中指定物体对应参数的值。请参阅"SETNSCPARAMETER"。 |
NPOS(surf, object, code) | "面"是表面编号,"物体"是物体编号,"代码"是1到6,分别对应要返回的参考物体的x、y、z、x倾斜、y倾斜和z倾斜。 | 返回非序列模式元件编辑器中位置列中的值。请参阅"SETNSCPOSITION"。 |
NPRO(surf, object, code, face) | "面"是表面编号,"物体"是物体编号,"代码"的值为关键字SETNSCPROPERTY定义的值,"面"是指定物体的面编号。 |
返回在非序列模式元件编辑器中定义物体的属性页中的数值或字符串值。如需了解有关代码值的更多信息,请参阅"SETNSCPROPERTY"。调用该函数返回字符串数据之后,可用$buffer()函数提取字符串值。例如,若要从非序列模式表面2中提取物体5的注释列,可使用以下两个命令: dummy = NPRO(2, 5, 1, 0) a$ = $buffer() 此时dummy值可以忽略。字符串变量a$已包含了物体注释。 |
NSDC(surf, object, pixel, data) |
"面"值表示非序列模式组的表面编号。 "物体"编号表示所需的探测器。"像素"表示返回指定像素的值。"数据"为0表示实部,1表示虚部,2表示振幅,3表示相干强度。 另请参阅"NSTR" |
如果物体编号对应的是矩形探测器,则返回指定像素上的相干强度数据。相干强度数据对所有入射光线进行计算,包含4个数字:实部、虚部、振幅和相干强度。 如果像素编号为0,则返回探测器物体上所有像素数据的总和。 |
NSDD(surf, object, pixel, data) |
"面"值表示非序列模式组的表面编号。 物体编号表示所需的探测器。 请参阅右侧的详述内容,了解有关像素和数据参数的详细信息。 另请参阅"NSTR"。 |
如果物体编号为0,则函数会清除所有探测器数据,并且返回0。如果物体编号小于0,则函数会清除该物体编号的绝对值定义的探测器数据,并且返回0。 如果物体编号对应于矩形探测器、表面探测器或体探测器,则返回指定像素中的非相干强度数据。 如需了解有关像素和数据参数的完整详述,请参阅优化操作数"NSDD"。该ZPL函数中像素和数据参数的定义与NSDD优化操作数的相同。 与优化操作数NSDD不同的是,该函数不支持指定# Ignored参数的值,并且假定# Ignored值始终为0。 请注意,与评价函数操作数NSDD不同,该ZPL数值函数NSDD()不支持pixel = -14/-15,因为无法传递空间频率。如需了解有关在ZPL中计算几何MTF的信息,请参阅GETNSCMTF。 |
NSDE(surf, object, pixel, angle, data, wavelength) |
"面"值表示非序列模式组的表面编号。 "物体"编号表示所需的探测器。 请参阅右侧的详述内容,了解有关像素、角度、数据和波长参数的详细信息。 另请参阅"NSTR"。 |
如果物体编号为0,则函数会清除所有探测器数据,并且返回0。如果物体编号小于0,则函数会清除该物体编号的绝对值定义的探测器数据,并且返回0。 如果物体编号对应于颜色探测器,则返回指定像素上的数据。 如需了解有关像素、角度、数据和波长参数的完整详述,请参阅优化操作"NSDE"。该ZPL函数中的像素、角度、数据和波长参数的定义与NSDE优化操作数的相同。 与优化操作数NSDD不同的是,该函数不支持指定# Ignored参数的值,并且假定# Ignored值始终为0。 |
NSDP(surf, object, pixel, data) |
"面"值表示非序列模式组的表面编号。 "物体"编号表示所需的探测器。 请参阅右侧的详述内容,了解有关像素和数据参数的详细信息。 另请参阅"NSTR"。 |
如果物体编号为0,则函数会清除所有探测器数据,并且返回0。如果物体编号小于0,则函数会清除该物体编号的绝对值定义的探测器数据,并且返回0。 如果物体编号对应于极坐标探测器,则返回指定像素上的数据。 如需了解有关像素和数据参数的完整描述,请参阅优化操作数"NSDP"。该ZPL函数中像素和数据参数的定义与NSDP优化操作数的相同。 |
NSUR() | (空) | 已定义的表面数量。 |
NWAV() | (空) | 已定义的波长数量。 |
OBJC(A$) | 任何字符串变量名称 | 含注释的物体。返回注释与字符串A$内容相同的第一个非序列模式物体编号,不区分大小写。如果非序列模式物体与注释不匹配,则返回-1。 |
OCOD(A$) | OpticStudio优化操作数的任何字符串变量或文本名称。 | 用作OPEV函数的优化操作数代码编号。 |
ONUM(A$) | 任何字符串变量名称 |
如果字符串A$是一个有效的优化操作数名称,如EFFL,则ONUM返回操作数的ID号。 该操作数ID号随后可由SETOPERAND使用,用于在评价函数编辑器中设置操作数类型。如果A$不对应任何优化操作数名称,则ONUM返回0。 |
OPDC() | (空) | 光程差。仅在调用RAYTRACE后有效。如果无法追迹主光线,则OPDC将不会返回有效数据。RAYTRACEX不支持OPDC。 |
OPER(row, col) | 评价函数编辑器的行(操作数编号)和列(数据类型)。 |
提取来自评价函数编辑器的任何行和列对应的数据。行与操作数编号相同;column为1表示类型,2表示int1,3表示int2,4到7表示data1到data4,8表示目标,9表示权重,10表示当前值,11表示贡献百分比,12到13表示data5到data6。 可使用列编号2来获取BLNK操作数中的注释,注释随后将置于字符串缓冲区。例如,要获取第1行中的注释,可用如下命令: dummy = OPER(1,2) a$ = $buffer() 此时dummy值可以忽略,字符串变量a$已包含了第一行中的注释。 OPER不会更新镜头数据或评价函数,只返回当前数据。另请参阅OPEV、MFCN和关键字SETOPERAND。 |
OPEV(code, int1, int2, data1, data2, data3, data4) | code是优化操作数代码(参阅函数OCOD),int1-int2以及data1-data4是操作数的定义值。请参阅优化操作数(Optimization operands)。 |
计算的值与任何优化操作数计算的值相同,但不需要将操作数添加到评价函数中。可用于计算已通过优化操作数获得的数值。例如,要通过EFFL操作数来计算EFL,请使用以下代码: C = OCOD("EFFL") E = OPEV(C, 0, 1, 0, 0, 0, 0) 请确保填写OPEV的所有7个输入变量。如果优化操作数需要的参数少于6个,则使用额外的0,如上例所示。 另请参阅OPER、OCOD、MFCN和关键字 SETOPERAND。 一些优化操作数(如OPGT)只有和其它操作数一起使用才有效。OPEV仅对不取决于先前操作数的操作数有效。另请参阅下面的OPEW。 |
OPEW(code, int1, int2, data1, data2, data3, data4, data5, data6) | 代码(code)是优化操作数代码(参阅函数OCOD),int1-int2以及data1-data6是操作数的定义值。请参阅优化操作数(Optimization operands)。 | 该函数与OPEV非常相似,关键区别是OPEW支持两个额外的参数。某些优化操作数最多使用6个数据值,而非4个。 |
OPTH(x) | 有效的表面编号 | 沿光线到指定表面的光程。不同于RAYT和RAYO,OPTH考虑衍射表面的相位(如光栅、全息图和二元光学面)。仅在调用RAYTRACE后有效。如果无法追迹主光线,则OPTH不会返回有效数据。RAYTRACEX不支持OPTH。 |
PARM(n,s) | 有效的参数编号和表面编号 | 表面"s"的参数"n"。 |
PIXX(A$) | 一个包含BMP、JPG或PNG图像文件完整路径的字符串变量。 | 图形中X轴方向的像素数。 |
PIXY(A$) | 一个包含BMP、JPG或PNG图像文件完整路径的字符串变量。 | 图形中Y轴方向的像素数量。 |
PMOD() | (空) | 如果近轴模式关闭,则返回0,否则返回1。 |
POWR(x,y) | x和y是任何数字 | 计算x的y次幂的绝对值。 |
PVEX() | (空) | ZPLM优化操作数中的data5参数。 |
PVEY() | (空) | ZPLM优化操作数中的data6参数。 |
PVHX() | (空) | ZPLM优化操作数中的data1参数。 |
PVHY() | (空) | ZPLM优化操作数中的data2参数。 |
PVPX() | (空) | ZPLM优化操作数中的data3参数。 |
PVPY() | (空) | ZPLM优化操作数中的data4参数。 |
PWAV() | (空) | 主波长编号。 |
RADI(x) | 有效的表面编号 | 指定表面的曲率半径。如果表面半径无穷大,则RADI返回0.0。必须考虑这种可能性,以防止出现除数为0的错误。 |
RAGL(x) | 有效的表面编号 | 指定表面出射光线的全局X轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAGM(x) | 有效的表面编号 | 指定表面出射光线的全局Y轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAGN(x) | 有效的表面编号 | 指定表面出射光线的全局Z轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAGX(x) | 有效的表面编号 | 光线交点的全局x坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAGY(x) | 有效的表面编号 | 光线交点的全局y坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAGZ(x) | 有效的表面编号 | 光线交点的全局z坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAND(x) | 数值表达式 | 在0和表达式之间均匀分布的随机浮点数。建议在调用关键字RANDOMIZE之后使用,以改变随机数种子。如果正在使用NSC raytrace操作数(如NSTR),则需要使用关键字RANDOMIZE重新设定随机数生成器的种子。 |
RANX(x) | 有效的表面编号 | 指定表面法线的X轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RANY(x) | 有效的表面编号 | 指定表面法线的Y轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RANZ(x) | 有效的表面编号 | 指定表面法线的Z轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYE() | (空) | 光线追迹错误标记,如果没有错误,则返回0。仅在调用RAYTRACE或RAYTRACEX之后有效。有关详细信息,请参阅关键字RAYTRACE。 |
RAYL(x) | 有效的表面编号 | 指定表面出射光线的X轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYM(x) | 有效的表面编号 | 指定表面出射光线的Y轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYN(x) | 有效的表面编号 | 指定表面出射光线的Z轴方向余弦。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYO(x) | 有效的表面编号 | 光线从前一个表面到指定表面的光程。光程等于路径长度乘以折射率,路径长度或折射率都可能为负数。对于非序列模式表面内的光线,RAYO返回光线通过的所有物体的路径长度乘以折射率的总和。仅在调用RAYTRACE或RAYTRACEX之后有效。另请参阅OPTH和RAYT。 |
RAYT(x) | 有效的表面编号 | 从前一个表面到指定表面的光程。光程可能是负数。仅在调用RAYTRACE或RAYTRACEX之后有效。另请参阅OPTH和RAYO。对于非序列模式表面内的光线,RAYT返回通过所有段数的路径长度之和。另请参阅RAYO。 |
RAYV() | (空) | 如果光线没有渐晕,则返回0,否则返回渐晕表面编号。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYX(x) | 有效的表面编号 | 光线交点的X坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYY(x) | 有效的表面编号 | 光线交点的Y坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RAYZ(x) | 有效的表面编号 | 光线交点的Z坐标。仅在调用RAYTRACE或RAYTRACEX之后有效。 |
RELI(f) | 视场编号 | 指定视场位置的相对照度(RI)。 |
SAGG(x,y,z) | x、y是编号为z的表面上对应的点坐标(以镜头单位表示) | 计算表面上指定点的矢高(以镜头单位表示)。 |
SCOM(A$, B$) | 任何两个字符串变量名称 | 如果字符串相同,则SCOM返回0。如果A$小于B$,则SCOM返回一个负数,否则返回一个正数。 |
SDIA(x) | 有效的表面编号 | 指定表面的净口径或半直径。 |
SIGN(x) | 数值表达式 | 如果参数小于0,则返回-1,如果参数为0,则返回0,如果参数大于0,则返回+1。 |
SINE(x) | 以弧度为单位的数值表达式 | 表达式的正弦。 |
SLEN(A$) | 任何字符串变量名称 | 返回字符串变量A$的长度。长度根据字符串变量中的字符数量进行定义。 |
SOLM(operand, config, code) | "操作数"是多重结构操作数编号。"结构"是结构编号。"代码"为0表示状态,1表示拾取解中定义的结构编号,2表示拾取解中定义的操作数行,3表示拾取解中定义的比例因子,4表示拾取解中定义的偏移量,5表示操作数的当前数值或字符串值,6表示ZPL宏求解中的宏名称,7表示玻璃库名称。求解状态类型不一定使用所有代码。 | 返回值是关于指定多重结构操作数、指定结构对应数值的求解类型和数据。如果"代码"为0(表示状态),则返回值为0,表示对应数值求解类型为固定值,返回1表示变量,返回2表示拾取,返回3表示热拾取,返回4表示ZPL宏,返回5表示玻璃替换求解类型。调用该函数返回字符串数据之后,可用$buffer()函数提取字符串值。如需了解有关求解数据和求解参数的更多信息,请参阅求解类型(多重结构编辑器)(Solve Types (multiple configuration editor))。 |
SOLV(surf, code, param) | ""面"为表面编号。"代码"为0表示曲率,1表示厚度,2表示玻璃,3表示圆锥系数,4表示半径,5表示TCE(热膨胀系数)。对于参数数据,代码是100加上参数编号。对于附加数据,代码是300加上附加数据编号。"参数"是0到4之间的整数,包括0和4。 | 返回值是关于指定表面和数据的求解类型数据。如果"参数"为0,则返回代表求解类型的整数。如果"参数"为1到3,则返回对应求解类型的相关参数。如果"参数"为4,则返回拾取参数列编号。调用该函数返回字符串数据之后,可用$buffer()函数提取字符串值。如需了解有关求解数据和求解参数的更多信息,请参阅求解类型(镜头数据编辑器)(Solve Types(lens data editor))。 |
SOSO(code) | 代码为0,返回当前执行的宏求解的表面编号;代码为1,返回物体编号。 | 返回当前正在执行的求解宏中的表面编号和/或物体编号。如果当前宏没有用于求解,则返回无意义的数据。 |
SPRO(surf, code) | "面"为表面编号。"代码"为关键字SETSURFACEPROPERTY中定义的代码值。仅支持整数代码值,不支持助记符。 |
返回镜头数据编辑器中定义的表面属性页或编辑器的数值或字符串值。如需了解有关代码值的更多信息,请参阅"SETSURFACEPROPERTY、SURP"。调用该函数返回字符串数据之后,可用$buffer()函数提取字符串值。例如,要提取表面4的注释列,请使用以下两个命令: dummy = SPRO(4, 1) a$ = $buffer() 此时dummy值可以忽略。字符串变量a$已包含了表面注释。SPRO不能使用SETSURFACEPROPERTY中value2变量定义的属性值,若需要,请使用SPRX。这些属性包括参数数据、附加数据、膜层缩放因子、折射率偏移值和状态。 |
SPRX(surf, code, value2) | surf为表面编号。code和value2为关键字SETSURFACEPROPERTY中定义的代码值。仅支持整数代码值,不支持助记符。 | SPRX类似于SPRO,关键区别在于SPRX具有一个额外的变量。通过SETSURFACEPROPERTY的"value2"参数设置的参数才需要使用SPRX。请参阅"SETSURFACEPROPERTY、SURP" |
SRCN(A$, n) | A$为任意字符串变量名称,n为第n个要返回的匹配表面编号。 | 表面匹配注释#n。返回注释与字符串A$匹配的第n个表面编号。不区分大小写。当n为正时,搜索方向为正向(0到表面编号),当n为负时,搜索方向为反向(表面编号到0)。如果没有n匹配注释,则函数返回-1。当n为零时,返回匹配表面注释的计数。 |
SQRT(x) | 正数值表达式 | 表达式的平方根。 |
STDD()-废弃 | 此函数已废弃,请改为使用SRPO。 | |
SURC(A$) | 任何字符串变量名称 |
含注释的表面。返回注释与字符串A$匹配的第一个表面编号。不区分大小写。如果没有任何表面注释与A$匹配,则返回-1。 在进行公差操作时,即使自动添加了额外表面,SURC函数也会一直返回原始的表面编号。为避免出现这种现象,请使用SRCN数值函数。 |
SVAL(A$) | 任何字符串变量名称 | 字符串值。返回字符串A$的浮点值,假定句点(.)是字符串中的小数点分隔符。另请参阅LVAL。 |
SYPR(code) | "代码"为关键字SETSYSTEMPROPERTY中定义的代码值。仅支持整数代码值,不支持助记符。 |
返回相关系统数据的数值或字符串值。如需了解有关代码值的更多信息,请参阅"SETSYSTEMPROPERTY、SYSP"。调用该函数返回字符串数据之后,可用$buffer()函数提取字符串值。例如,要提取镜头标题,请使用以下两个命令: dummy = SYPR(16) a$ = $buffer() 此时dummy值可以忽略。字符串变量a$已包含了镜头标题。SYPR不能使用SETSYSTEMPROPERTY中value2变量定义的属性值。 |
TANG(x) | 以弧度为单位的数值表达式 | 表达式的正切。 |
函数 | 参数 | 返回值 |
TMAS() | (空) |
从表面1到像面中 镜头的总质量(以克为单位) |
THIC(x) | 有效的表面编号 | 指定表面的厚度。 |
TOLV(op, col) | 整数op是公差操作数编号,col是公差数据编辑器中的列编号。请参阅详述。 |
返回公差数据编辑器中的数值或字符串值。如果col是1、2或3,则返回该操作数类型使用的整数1、整数2或整数3。如果col是4或5,则返回公差的最小值或最大值。如果col为6,则返回"在反向公差时不调整(Do Not Adjust During Inverse Tolerancing)"标记(1表示勾选,0表示未勾选)。如果col为7,则返回"在计算公差时忽略该操作数(Ignore this Operand During Tolerancing)"标记(1表示选中,0表示未选中)。 如果col为90,则返回对应公差操作数的名义值。 如果col值为0或99,则返回操作数类型名称或操作数注释,并将其分别存放于缓冲字符串中。例如,要提取操作数7的操作数名称,请使用以下两个命令: dummy = TOLV(7, 0) a$ = $buffer() 此时dummy值可以忽略。字符串变量a$已包含了操作数名称。另请参阅执行类似功能的字符串函数 $TOLOPERAND和$TOLCOMMENT。 |
UNIT() | (空) | 如果当前单位类型分别是毫米、厘米、英寸或米,则分别返回0、1、2或3。 |
VEC1(x) | 正下标值 | 返回数组变量中指定下标对应的值。 |
VEC2(x) | 正下标值 | 返回数组变量中指定下标对应的值。 |
VEC3(x) | 正下标值 | 返回数组变量中指定下标对应的值。 |
VEC4(x) | 正下标值 | 返回数组变量中指定下标对应的值。 |
VERS() | (空) | 返回OpticStudio程序版本。版本的格式为yymmdd。例如,2005年6月15日发行的OpticStudio版本为050615。 |
WAVL(x) | 有效的波长编号 | 以微米为单位的波长。 |
WINL() | (空) | 返回由关键字OPENANALYSISWINDOW最近打开的分析窗口的编号。 |
WINN() | (空) | 返回所有打开分析窗口的编号。 |
WWGT(x) | 有效的波长编号 | 波长权重。 |
XMIN() | (空) | 图形窗口中的最小x坐标。 |
XMAX() | (空) | 图形窗口中的最大x坐标。 |
函数 | 参数 | 返回值 |
YMIN() | (空) | 图形窗口中的最小y坐标。 |
YMAX() | (空) | 图形窗口中的最大y坐标。 |
下一部分: