说一说CODEV的宏

泰哥 中科院长春光机所 今天

这个假期没什么事情做,就把CODEV的宏研究了一下, CODEV的宏里有很多有意思的功能,举个例子,ilrevers.seq这个宏就可以把有限远的成像系统的物面和像面倒过来,edgvig.seq这个宏可以按照要求计算需要的渐晕,还有很多其他的功能,只要会用,就可以让你的CODEV升级换代。

我在这里跟大家分享一些学习宏的经验,首先市面上没什么学习宏的资料,基本上要靠CODEV自带的宏和帮助手册(zemax的宏编辑方法见过,要价400一本……)。CODEV的宏的编辑里,一般都会在开篇写明宏的用途,如果不需要琢磨宏的编辑,只要看明白用途就可以了。

                     

     

从这里进入宏的具体内容


前面框里就会写明宏的用法


如果只是简单应用codev的自带宏,看到这里就够了。但是,如果是要研究宏的编辑,那就需要研究一下里面的具体内容,这里面的东西很多,我才疏学浅,也有很多东西弄不明白,但是可以分享给大家一些浅显的内容和学习的办法,希望能帮助大家少走一些弯路。

首先,可以在宏的内容里看到很多^符号,这个代表着一个变量,具体的变量名是^后面的部分,能看懂这个,基本上就可以看出很多语句的意思了(刚开始入门的时候,就是这一点一直看不明白,头疼了很久)。CODEV的变量要在宏的开头定义,比方说要定义几个变量^field(25) 、^pupil和^backFocus,要在宏的开头写下lcl num ^field(25) ^pupil ^backFocus。这里的lcl代表着本地变量,就是在这个宏里能用的变量,num代表这几个变量是数据类的,如果是str则代表字符串类。

其次,是CODEV的赋值语句,CODEV的语句一般都比较糙……比方说,现在有一个^f变量,我要给它赋值为1,那这段语句就是,“^f 1”,就用一个空格把^f和1分开就可以了。

或者,为了加深点印象,我们也可以用一个简单的赋值语句试验一下,我们可以打开一个CODEV文档,在命令行里输入一句赋值语句,“thi s1 1”,看看是不是就把第一个面的厚度改成1了。(thi代表厚度,s1代表第一个面,1代表给第一个面的厚度赋值为1)。

循环语句也是类似,比方说,要做一个循环让^f从1循环到^i,就写作“for ^f 1 ^i”。 

很多情况下,宏里有看不懂的命令,这时候我们可以有几个办法查询,还是随便打开一个CODEV文档,在命令行里输入“\ (需要查询的函数名)”,CODEV会回复这个函数的具体用法。但是,有时候光是函数的用法,我们还是不明白这个函数的含义,这时候我们可以输入“hel (需要查询的函数名)”,即可以调出帮助手册里关于这个函数的内容。我以一个fly命令为例,这是个用来将几个面沿y轴翻转的函数,但是现在假设我不明白这个函数的含义,我开始用两个命令来查询。

Codev告诉我这个命令不存在,所以我再输入hel fly。

可以看到,codev写的很清楚,fly的用法是,fly [s1……sj],意思是延y轴旋转。其他未知的命令也都可以按照这个套路来找到它的含义。这样,我们就可以按照这个办法学习codeV的宏怎么编辑了。
还有一点需要说明,在用过hel函数之后,它会出现下图这种情况,这时候输入e让它退出就可以了。如果不输入,它就会一直停在这里,你后面的操作就会无效,比方说,它停在这里,你去修改某个面的半径,就会改不了。
距离开学还有一段时间,和大家分享一些学习的经验,才疏学浅,如果有错误,还请各位指正,希望大家学习愉快,谢谢大家~