Gosub. SUB. Return, and END

Назначение:

Эти четыре ключевых слова используются вместе для определения и вызова подпро­грамм, записанных в ZPL программе. Каждое из этих ключевых слов имеет свое наз­начение. GOSUB используется для направления хода выполнения программы к указанной подпрограмме. SUB используется для определения имени подпрограммы, а также индикации места начала подпрограммы. RETURN указывает, что дальнейшее выполнение программы должно производиться от места, из которого был вызван самый последний GOSUB. END указывает, что выполнение программы должно быть прекращено немедленно.

Синтаксис: Смотри данный ниже пример.

Обсуждение:

Допускается не более 50 определенных подпрограмм для одного ZPL макроса. Каждая подпрограмма должна быть ограничена командой RETURN. Более одной команды RETURN может быть вложено в тело подпрограммы. Если подпрограммы определены, то по меньшей мере одна команда END должна быть использована для указания конца основной программы. Тело основной программы должно распола­гаться в начале файла.

Не может быть более 50 "встроенных подпрограмм" в ZPL макросе. Например, если подпрограмма АВС вызывает подпрограмму XYZ, то число встроенных подпрограмм равно 2. Если затем подпрограмма XYZ вызывает подпрограмму DEF, то число встроенных подпрограмм будет уже 3.

Все переменные в ZPL - глобальные. Все переменные, используемые или определенные в подпрограмме, существуют также и в основной программе.

Пример:

х = 1

у = 2

GOSUB add

print "the sum of ", x, \' and \\, y, " is ", z

END

SUB add

z = x + у

RETURN

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-29


GOTO

Назначение:

Обычно все строки в программе выполняются по очереди. Команда GOTO позволяет направить дальнейшее выполнение программы к произвольной строке программы. GOTO всегда используется в связке с командой LABEL.

Синтаксис:

GOTO lаЬеl_номер

Обсуждение:

В программе должна где-либо находиться команда LABEL с указанным номером, в противном случае будет ошибка.

Пример:

Label 1

х = RAND(10)

if x <= 5 THEN GOTO 1

PRINT "X is greater than 5 "


GRAPHICS

Назначение:

Служит для создания стандартной для графиков ZEMAX рамки с линиями для заголовков.

Синтаксис:

GRAPHICS

GRAPHICS OFF

Обсуждение:

Команда GRAPHICS создает стандартное графическое окно ZEMAX; все последую­щие графические команды адресуются к вновь созданному окну. Команда GRAPHICS OFF закрывает доступ к существующему графическому окну, а затем высвечивает его на экране.

Пример:

Graphics

Xmx = xmax()

Xmn = xmin()

Ymx = ymax ()

Ymn = ymin()

Xwidth = xmx-xmn

Ywidth = ymx-ymn

Xleft = xmn + (.1 * xwidth)

Xrigh = xmn + (.9 * xwidth)

Ytopp = xmn + (.1 * ywidth)

Ybott = ymn + (. 7 * ywidth)

Line xleft,ytopp,xrigh,ytopp

Line xrigh,ttopp,xrigh,ybott

Line xrigh,ybott,xleft,ybott

Line xleft,ybott,xleft,ytopp

Gtitle " the rain in Spain falls mainly on the plain"

Glensname

Gdate

24 -30                                                     Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Gtext xmx/2,ymx/2,0, "start this text in the center.”

" Gtextcent ymx*.05, "center this text near the top.”

" Gtext xmx*.05,ymx*.75,9,"place me vertically near left edge.

" Gtext xmx*.15,ymx*.68,30, "orient me at 30 degrees."

Graphics off

 Полученный график показан ниже на рис. 1.


GTEXT

Назначение:

Команда GTEXT используется для нанесения на графики различных надписей.

Синтаксис:

GTEXT х, у, угол, текст_пользователя

GTEXT х, у, угол, А$

Обсуждение:

Координаты х и у определяют место на графике, где должен начинаться записанный в этой команде текст. Текст может быть записан либо в виде "постоянной" строки (либерала), взятой в кавычки, либо в виде имени строчной переменной. С помощью аргумента Угол определяется наклон строки относительно графической рамки; 0 градусов соответствует горизонтальному направлению. Смотри также SETTEXTSIZE.Пример:

Смотри раздел GRAFICS.

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                            24-31



GTEXTCENT

Назначение:

Команда GTEXTCENT используется для центрирования ваших надписей на графиках.

Синтаксис:

GTEXTCENT у, текст_пользователя

Обсуждение:

Координата у определяет положение вашей строки на графике по вертикали. Смотри также SETTEXTSIZE.

Пример:

Смотри раздел GRAFICS.

GTITLE

Назначение:

Команда GTITLE служит для записи строки с названием графика; строка будет центрирована и помещена в рамку заголовка в графическом окне. GTITLE полезна для того, чтобы созданный вами график имел такой же вид, как все другие графики ZEMAX.

Синтаксис:

GTTITLE текст_ пользователя

Обсуждение:

GTITLE в основном используется для того, чтобы созданный вами график имел такой же вид, как все другие графики ZEMAX.

Пример:

Смотри раздел GRAFICS.

IF-THEN-ELSE-ENDIF

Назначение:

С помощью IF задаются условия выполнения программы и ее ветвления.

Синтаксис:

IF (выражение)

(операции)

ELSE

(операции)

ENDIF

ИЛИ

IF (выражение) THEN (выражение)

Обсуждение:

Конструкция IF-ELSE-ENDIF используется для определения условий, при которых должна выполняться группа операций, следующих за словом IF, или операций, следующих за словом ELSE (иначе), но не за обоими этими словами. Если аргумент выражение равен нулю, то выражение рассматривается как ложное, в противном случае оно рассматривается как правильное. Выражение может быть любым ZPL выражением, состоящим из функций, переменных, операторов и постоянных.

24 -32                                                         Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Оператор IF должен использоваться в паре с оператором ENDIF, в то время как оператор ENDIF может вводиться или нет. Пары операторов IF-ENDIF могут быть встроенными на разных уровнях.

Конструкция IF-THEN удобна для задания условия выполнения одной единственной инструкции. Если используется слово THEN, то нет необходимости вводить слово ENDIF, так как команда IF и так будет ограничена только одной инструкцией. Слово ELSE в конструкции IF-THEN не используется.

Пример:

X = 1

у = 2

if (x < у)

    PRINT "x is less than y"

ELSE

    If (x == y) THEN PRINT "x equals y"

    If (x > y) THEN PRINT "x is greater than y"

ENDIF


INPUT

Назначение:

INPUT позволяет пользователю вводить в программу числовые и текстовые данные в процессе ее выполнения.

Синтаксис:

INPUT "Строка подсказки", переменная

INPUT переменная

INPUT "Строка подсказки", строчная_переменная

INPUT строчная_переменная

Обсуждение:

Переменным величинам могут быть даны любые обозначения. Если переменная является строчной переменной, то вход будет интерпретирован как текстовая строка;

в противном случае - как число. Если при записи команды после слова INPUT не введено никакой "подсказки", то будет использован знак "?". Строка подсказки всегда высвечивается на экране и может быть записана на русском языке; введение числовых и строчных переменных всегда производится с помощью клавиатуры.

Пример:

INPUT "Введите значение x", x

PRINT "X = ", x

                       INPUT "Введите текст для А$:", А$

                       PRINT A$

INSERT

Назначение:

С помощью команды INSERT вводится новая поверхность в таблицу редактора Lens Data Editor.

Синтаксис:

INSERT (n)

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                          24-33


Обсуждение:

Выражение для n должно генерировать целое число. Смотри также DELETE и SURFTYPE.

Пример:

INSERT 5

INSERT i + 2*j


LABEL

Назначение:

Метка LABEL служит для указания цели для команды GOTO; смотри описание команды GOTO.

Синтаксис:

LABEL номер_метки

Обсуждение:

Номер метки должен быть целым числом, таким как 1 или 7. LABEL не оказывает никакого воздействия на ход самой программы.

LINE

Назначение:

LINE служит для рисования прямой линии в графическом окне.

Синтаксис:

LINE oldx, oldy, newx, newy

Обсуждение:

LINE определяется четырьмя выражениями и рисует прямую линию между задан­ными точками. Координаты х и у относятся к системе координат графического окна и должны находиться в пределах, заданных командами XMIN, YMIN, ХМАХ и YMAX. Хотя координаты могут быть только целочисленными величинами, аргументами LINE могут быть любые действительные числа, которые при выполнении команды будут округлены до ближайших целых чисел. Команда LINE действует только в графичес­ком режиме.

Пример:

Смотри раздел GRAPHICS.

LOADLENS

Назначение:

Загружает новую схему с диска.

Синтаксис:

LOADLENS "filename" [appendflag]

LOADLENS file$ [appendflag]

Обсуждение:

LOADLENS загружает новую схему из диска. Если "filename" содержит запись полного пути к файлу, как например, C:\MYDIR\MYLENS.ZMX, то указанный файл будет загружен. Если указание пути к файлу отсутствует, то будет осуществлен поиск файла в директории, установленном в диалоговом окне Environment (смотри раздел Environment в главе File menu).

24 -34                                                        Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Если [appendflag] равен нулю или отсутствует, то команда LOADLENS просто загружает указанный файл. Если [appendflag] больше нуля, то указанный файл присоединяется к текущему файлу; при той поверхности, номер которой соответ­ствует значению [appendflag].

Пример:

LOADLENS "СООКЕ.ZMX"

Связанные слова:

SAVELENS


LOADMERIT

Назначение:

Загружает оценочную функцию ("Merit function") с диска и помещает ее в файл с текущей схемой.

Синтаксис:

LOADMERIT "filename" LOADMERIT file$

Обсуждение:

LOADMERIT загружает новую Merit function из диска. Если "filename" содержит запись полного пути к файлу, как например, C:\MYDIR\MYLENS.MF, то указанный файл будет загружен. Если указание пути к файлу отсутствует, то будет осуществлен поиск файла в директории, установленном в диалоговом окне Environment (смотри раздел Environment в главе File menu).

NEXT

Смотри FOR. NUMFIELD

Назначение:

Устанавливает полное число определяемых полей.

Синтаксис:

NUMFIELD <выражение>

NUMWAVE

Назначение:

Устанавливает полное число используемых длин волн.

Синтаксис:

NUMWAVE <выражение>

OPEN

Назначение:

Открывает ASCII-файл с числовыми данными, которые читаются затем с помощью команды READ.

Синтаксис:

OPEN "имя файла"

OPEN A$

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-35


Обсуждение:

Имя вызываемого файла должно быть либо записано в кавычках, либо содержаться в строчной переменной; смотри ключевые слова READ и CLOSE. После прочтения данных текстовый файл всегда должен закрываться словом CLOSE!

Пример:

PRINT "Reading the double-column file TEST.DAT!"

OPEN "TEST.DAT"

READ x1, y1

READ x2, y2

READ x3, y3

CLOSE


OPTIMIZE

Назначение;

Вызывает алгоритм оптимизации текущей схемы с текущей оценочной функцией.

Синтаксис:

OPTIMIZE OPTIMIZE число_циклов

Обсуждение:

Если аргумент отсутствует, то оптимизация проводится в автоматическом режиме ("Automatic" mode) и заканчивается, когда алгоритм обнаружит, что процесс достиг предела. Если аргумент присутствует, он должен быть целым числом между 0 и 99; в таком случае будет выполнено указанное число циклов оптимизации.

Родственные функции:

MFCN

OPTRETURN

Назначение:

Используется для записи указанных результатов вычислений, произведенных ZPL макросом, в глобальную матрицу данных текущей схемы с целью сделать их доступными (в качестве входных данных) для оператора оптимизации ZPLM.

Синтаксис:

OPTRETURN (позиция) = (результат)

Обсуждение:

OPTRETURN имеет два аргумента, разделенных знаком равенства. Выражение (позиция) должно генерировать целое число от 0 до 50; это число определяет номер поля в глобальной матрице, ассоциируемой с текущей схемой, в которое должен быть записан (результат) вычислений. Единственная цель OPTRETURN - сделать возможным оптимизацию значений, вычисленных ZPL макросом.

В оценочной функции должен быть использован оператор оптимизации ZPLM для вызова необходимого макроса, его выполнения и извлечения результатов вычислений, передаваемых командой OPTRETURN. Смотри главу "Optimization".

Пример:

x = sqrt (thic(3) + radi(5))

OPTRETURN j = x + 5

24 –36                                                       Chapter 24: ZEMAX PROGRAMMING LANGUAGE



OUTPUT

Назначение:

Определяет место, куда должен выводиться выходной текст: на экран или записы­ваться в указанный файл.

Синтаксис:

OUTPUT SCREEN

OUTPUT "имя файла"

OUTPUT "имя файла" APPEND

OUTPUT A$

OUTPUT A$ APPEND

Обсуждение:

Если использован только выход OUTPUT SCREEN, то все записи, определяемые последующими операторами PRINT, будут выводиться на экран. Если указано имя файла, то все записи, определяемые последующими операторами PRINT, будут записываться в указанный файл. Для закрытия созданного ранее файла, используйте команду OUTPUT SCREEN, которая будет выводить последующие операции PRINT на экран. Команда SHOWFILE закрывает файл и выводит его содержание для просмотра на экран. Команда PRINTFILE закрывает файл и распечатывает его содержание на заданном принтере.

Если за именем файла следует слово APPEND, то выходы последующих команд PRINTER будут присоединены к содержимому файла. В противном случае содержание файла будет переписано.

Пример:

OUTPUT "x.txt"

PRINT "This will not appear on the screen, but in the",

PRINT " file x.txt."

OUTPUT SCREEN

PRINT "This will appear on the screen."

OUTPUT "x.txt" APPEND

PRINT "This will appear after the first line in the file",

PRINT " x.txt."

Связанные слова:

CLOSE, OPEN, SHOWFILE, PRINTFILE

PARn

Назначение:

PARn используется для определения величины п-го параметра для указанной поверхности. Смысл параметров описан в главе "Using ZEMAX". Для моделирования поверхностей используются от 0 до 8 различных параметров.

Синтаксис:

PAR1 (поверхность) = (новое_значение)

PAR8 (поверхность) = (новое_значение)

Обсуждение:

Это ключевое слово требует два выражения: одно для указания номера поверхности и другое для определения новой величины указанного параметра. Выражение поверхность вычисляется и округляется до меньшего целого значения, которое и

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                          24-37


определяет номер поверхности; если номер поверхности меньше нуля или больше числа заданных в схеме поверхностей, то команда игнорируется! В противном случае указанному параметру присваивается значение, равное вычисленной величине выражения новое_значение. Заметьте, что оператор PARn относится к 8 различным командам: PAR1, PAR2,..., PAR8.

Пример:

PAR1 (1) = 250

Связанные слова:

UPDATE


PARAXIAL

Назначение:

Используется для установки режима трассировки лучей: для параксиальных лучей или для реальных лучей.

Синтаксис:

PARAXIAL ON PARAXIAL OFF

Обсуждение:

Используется для управления режимом трассировки лучей: для параксиальных или для реальных лучей. Определить установленный в данный момент режим можно с помощью ключевого слова PMOD, которое принимает значение 0, если производится трассировка реальных лучей, и значение 1, если установлен режим трассировки параксиальных лучей. Для вычисления некоторых величин, таких как дисторсия или фокальная длина, требуется трассировка параксиальных лучей.

Пример:

mode = PMOD()

If mode then PRINT "Paraxial mode is on!"

If!mode THEN PRINT "Paraxial mode is not on!"

PARAXIAL ON

PRINT "Now paraxial mode is on!"

PRINT "Restoring original mode..."

If!mode THEN PARAXIAL OFF

PAUSE

Назначение:

Приостанавливает выполнение программы, а на экране высвечивает сообщение о текущем состоянии.

Синтаксис:

PAUSE

PAUSE x

PAUSE "Ready to continue...”

PAUSE x + sqrt (5)

Обсуждение:

Эта команда вызывается автоматически, когда закрывается графическое окно. Эта команда используется для рисования точечных диаграмм.

24 -38                                                            Chapter 24: ZEMAX PROGRAMMING LANGUAGE



POLDEFINE

Назначение:

Определяет исходное состояние поляризации перед последующим вызовом команды POLTRACE.

Синтаксис:

POLDEFINE Ex, Еу, PhaX, PhaY

Обсуждение:

Ключевое слово POLDEFINE используется для определения исходного состояния поляризации луча перед его трассировкой. POLDEFINE требует определения нормированных величин электрического поля Ех и Еу, а также фазовых углов Х и Y в градусах. По умолчанию принимаются значения 0, 1, 0 и 0, соответственно. После того как исходная поляризация определена, она остается одной и той же до ее изменения.

Пример:

POLDEFINE 2.0 2.0 45.0 -66.0

Связанные слова:

POLTRACE

POLTRACE

Назначение:

Вызывает программу трассировки лучей для трассировки отдельного луча через текущую схему.

Синтаксис:

POLTRACE (hx),(hy),(px),(ру),(волна),(вектор),(поверхность)

Обсуждение:

Выражения hx и hy должны быть в пределах от -1 до +1 и представлять собой нормализованные координаты объекта. Значения координат зрачка px и ру также должны находиться в пределах от-1 до +1. Смотри раздел "Using normalized field and pupil coordinates". Выражение волна должно генерировать целое число между 1 и максимальным числом заданных длин волн. Выражение вектор должно оцениваться целым число от 1 до 4 включительно. Выражение поверхность должно определяться целым числом от 1 до числа заданных в схеме поверхностей (включительно).

Исходное состояние поляризации луча определяется с помощью ключевого слова POLDEFINE.

При трассировке луча данные о его поляризации помещаются в векторную матрицу, указанную в выражении вектор. Например, если записана команда "poltrace hx, hy, px, ру, w, 2, n", то данные будут записаны в векторную матрицу VEC2. Данные записываются в следующем формате (первое число в каждой строке обозначает позицию в матрице):

0:   n, общее число данных, записанных в матрицу

1:   интенсивность луча после прохождения поверхности

2:   х-компонента электрического вектора, реальная часть

3:   у-компонента электрического вектора, реальная часть

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                        24-39


4:   z-компонента электрического вектора, реальная часть

5:   х-компонента электрического вектора, мнимая часть

6:   у-компонента электрического вектора, мнимая часть

7:   z-компонента электрического вектора, мнимая часть

8:   амплитуда S-поляризации отраженного луча, реальная часть

9:   амплитуда S-поляризации отраженного луча, мнимая часть

10:  амплитуда S-поляризации пропущенного луча, реальная часть

11:  амплитуда S-поляризации пропущенного луча, мнимая часть

12:  амплитуда Р-поляризации отраженного луча, реальная часть

13:    амплитуда Р-поляризации отраженного луча, мнимая часть

14:  амплитуда Р-поляризации пропущенного луча, реальная часть

15:  амплитуда Р-поляризации пропущенного луча, мнимая часть

Если в позиции 0 записано число 0, то это означает, что произошла ошибка и данные поляризации ошибочны! Это может случиться, если заданный луч не может быть трассирован. Смотри RAYTRACE, где дана информация о возможных ошибках.

Пример:

POLDEFINE 0, 1, 0, О

POLTRACE 0, 1, 0, 0, pwav(), 1, nsur()

PRINT "Trans. of chief ray at primary wavelenght is \\,vec1(1)

Связанные слова:

POLDEFINE, RAYTRACE


PRINT

Назначение:

Команда PRINT используется для вывода на экран или для записи в файл (в зависи­мости от аргумента ключевого слова OUTPUT) выходных текстовых и числовых данных.

Синтаксис:

PRINT

PRINT X

PRINT "The value of x is ", x

PRINT "x = ", x, "x + у = ", x + у

Обсуждение:

Если используется только одно слово PRINT (без аргумента), то печатается пустая строка. Если за словом PRINT следует список текстовых сообщений и аналитических выражений, то будут печататься каждая текстовая строка (заключенная в кавычки) и числовые значения всех выражений. Числа печатаются в формате, определенном в команде FORMAT. Если после последнего выражения в списке будет поставлена запятая, то печатаемая строка не закончится возвратом каретки: в этой же строке будут потом записаны выходные данные, выводимые следующей командой PRINT.

Пример:

x = 3

PRINT "X equals "x

PRINTFILE

Назначение:

Печатает на принтере текст, записанный в файле.

24 -40                                                            Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Синтаксис:

PRINTFILE "имя файла"

PRINTFILE NAME$

Обсуждение:

Имя файла должно быть заключено в кавычки; в качестве аргумента может быть записано также имя строчной переменной, содержащей имя файла. Файл должен быть записан в формате ASCII (таким, как файл, создаваемый командами OUTPUT и PRINT) и должен находиться в текущем директории. PRINTFILE также сам закрывает файл, если не было команды CLOSE.

Пример:

OUTPUT "test.txt"

PRINT "Print this to the printer."

PRINTFILE "test.txt"

Связанные слова:

OPEN, OUTPUT, CLOSE, PRINT


PRINTWINDOW

Назначение:

Печатает на принтере открытый график или текстовое окно.

Синтаксис:

PRINTWINDOW номер__окна

Обсуждение:

Аргумент номер окна должен быть либо целым числом, либо выражением, которое генерирует целое число; этот аргумент определяет номер окна, которое должно быть напечатано. ZEMAX нумерует окна последовательно, как они открывались, начиная с номера 1. Каждое закрытое окно устраняется из списка окон без перенумерации оставшихся окон. Каждое окно, открытое после того как другое окно было закрыто, получит номер, наименьший из освободившихся.

Пример:

PRINTWINDOW 5 RADI

Назначение:

RADI используется для определения радиуса кривизны указанной поверхности.

Синтаксис:

RADI (поверхность) = (новое_значение)

Обсуждение:

Это ключевое слово требует два выражения: одно для определения номера поверх­ности и другое для определения нового значения. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое_значение и устанавливаются новая величина радиуса кривизны указанной поверхности.

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-41


Пример:

RADI i + m = -1200

Связанные слова:

UPDATE


RAYTRACE

Назначение:

Вызывает программу трассировки отдельного луча через текущую схему.

Синтаксис:

RAYTRACE (hx), (hy), (рх), (ру), (длина_волны)

Обсуждение:

Выражения hx и hy должны быть в пределах от -1 до +1 и представлять собой нормированные координаты объекта. Значения координат зрачка рх и ру также должны находиться в пределах от-1 до +1; смотри раздел "Using normalized field and pupil coordinates". Выражение длина волны может не определяться - по умолчанию будет использована главная длина волны; но если выражение длина волны определено, то оно должно давать целое число между 1 и максимальным числом заданных в схеме длин волн.

Сразу после трассировки луча можно определить координаты точек пересечения луча с поверхностями и направляющие косинусы луча с помощью ZPL-функций RAYX, RAYY, RAYZ, RAYL, RAYM и RAYN. Если при трассировке луча происходит ошибка, то функция RAYE (RAY Error) принимает отличное от нуля значение: если RAYE принимает отрицательное значение, то это означает, что имело место полное внутренне отражение на поверхности (номер, которой равен абсолютной величине значения RAYE); если RAYE принимает положительное значение, то это означает, что луч прошел мимо поверхности (номер которой равен значению RAYE). Вы можете по своему усмотрению контролировать или нет значение RAYE, однако, если эта функция принимает ненулевое значение, то функции RAYX, RAYY..., могут давать ошибочные результаты. Функции RANX, RANY и РАМ7дают величины направляющих косинусов нормалей к поверхностям в точках их пересечения с трассированным лучом. Функция OPDC дает величину разности оптического пути луча. Функция RAYV принимает значение, равное номеру поверхности, на которой луч был виньетирован, или принимает нулевое значение, если виньетирования не было. Принятые функциями значения для поверхностей, которые расположены после виньетирующей поверхности, могут быть не точными!

Пример:

PRINT "Tracing the marginal ray at primary wavelength!"

n = NSUR()

RAYTRACE 0, 0, 0, 1

у = RAYY(n)

PRINT "The ray intercept is ", у

PRINT "Tracing the chief ray at maximum wavelength!"

RAYTRACE 0, 1, 0, 0, NWAV()

у = RAYY(n)

PRINT "The ray intercept is ", у

24 -42                                                     Chapter 24: ZEMAX PROGRAMMING LANGUAGE



READ

Назначение:

Считывает данные из ASCII-файла, открытого командой OPEN.

Синтаксис:

READ x

READ x, у

READ x, y, z, a, b, c, q

Обсуждение:

ASXII-файл должен быть уже открытым; смотри ключевое слово OPEN. Каждая команда READ считывает только одну строку из файла. Число, записанное в этой строке первым, присваивается первой из перечисленных переменных. Число, записанное вторым, присваивается второй переменной, если она указана. Поэтому число переменных должно соответствовать числу колонок в тексте файла. Числовые данные, записанные в файле, должны быть разделены пробелом. Данные могут быть записаны в любой форме (желательно, способствующей их записи с двойной точностью). Максимум 199 знаков может быть считано из одной строки. Указанные переменные должны иметь имена, принятые для переменных ZPL.

Всегда после считывания данных необходимо закрывать файл командой CLOSE. Смотри описание функции EOFF.

Пример:

PRINT "Reading the double-column file TEST.DAT!"

OPEN TEST.DAT

READ x1, y1

READ x2, y2

READ x3, y3

CLOSE

READSTRING

Назначение:

Считывает данные из текстового ASCII-файла, открытого командой OPEN,

Синтаксис:

READSTRING А$

Обсуждение:

ASXII-файл должен быть уже открытым; смотри ключевое слово OPEN. Каждая команда READ считывает только одну строку из файла. Текст всей строки присваива­ется указанной строчной переменной. Имена указанных переменных должны соответ­ствовать обозначениям, принятым в ZPL; переменные не обязательно должны быть объявлены заранее. Всегда после считывания данных закрывайте файл командой CLOSE. Смотри функцию EOFF.

Пример:

PRINT "Reading the contents of file TEST.DAT!"

READSTRING A$

PRINT A$

CLOSE

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                        24-43


REM.!

Назначение:

REM используется для обозначения, что данная строка является комментарием.

Синтаксис:

REM текст! текст

Обсуждение:

Знак восклицания может быть также использован для обозначения комментария. Как команда REM, так и знак "!" действуют как индикаторы комментария только в том случае, если они находятся в самом начале строки, перед любыми пробелами, метками или какими-либо другими печатными знаками. Все другие использования этих слов будут приводить к ошибкам при выполнении программы.

Пример:

REM any text can be placed after the REM command.

! any text can also be placed

! after the exclamation symbol.


RETURN

Смотри GOSUB.

SAVELENS

Назначение:

Записывает файл с текущей схемой.

Синтаксис:

SAVELENS ["имя файла"]

SAVELENS NEW$

Обсуждение:

SAVELENS записывает файл с текущей схемой на диск. Имя файла с текущей схемой будет изменено на указанное; если имя файла не указано, то данные схемы будут записаны в файл под именем текущего файла.

Пример:

SAVELENS

SAVELENS "NEWCOPY.ZMX"

SAVELENS NEW$

Связанные сова:

LOADLENS

SDIA

Назначение:

SDIA используется для определения величины полудиаметра указанной поверхности.

Синтаксис:

SDIA (поверхность) = (новое_значение)

24 -44                                                     Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Обсуждение:

Это ключевое слово требует два выражения: одно для определения номера поверх­ности и другое для определения нового значения. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое значение и устанавливаются новая величина полудиаметра указанной поверхности.

Если выражение новое значение дает положительную величину, то статус полудиаметра будет изменен на "Fixed", вне зависимости от того, каким был статус этого полудиаметра до этого. Если выражение новое значение даст отрицательную величину, то будет установлен статус "Automatic", который обновит величину полудиаметра после последующего вызова команды "UPDATE".

Пример:

SDIA 5 = SDIA(4)

Связанные слова:

UPDATE


SETAIM

Назначение:

Устанавливает состояние функции "Ray aiming".

Синтаксис:

SETAIM состояние

Обсуждение:

Требует одного числового выражения, которое должно принимать целое значение между 0 и 2. Выражение состояние - это кодовое число, которое равно: 0 для выключения функции "ray aiming"; 1 - для параксиального приближения; 2 - для реального случая.

Пример:

SETAIM 1

SETCONFIG

Назначение:

Для систем с изменяющейся конфигурацией (zoom-систем) устанавливает указанный номер конфигурации в качестве текущей схемы.

Синтаксис:

SETCONFIG (номер конфигурации)

Обсуждение:

Это ключевое слово требует одного числового выражения, которое должно давать целое число между 1 и числом определенных в схеме конфигураций. Выражение оценивается и затем округляется до меньшего целого числа, которое и считается заданным номером конфигурации.

Пример:

SETCONFIG 4

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-45


Родственные функции:

CONF, NCON


SETTEXTSIZE

Назначение:

Изменяет размер знаков, печатаемых по команде GTEXT.

Синтаксис:

SETTEXTSIZE х-размер у-размер

Обсуждение:

Аргументы определяют размер печатных знаков в долях ширины графического окна. Например, по умолчанию печатные знаки имеют размер 70 40. Это означает, что каждый знак имеет ширину, равную 1/70 от ширины графического окна, и высоту, равную 1/40 от высоты окна. Если аргументы равны нулю, то вновь устанавливается размер 70 40.

Пример:

! Make text twice default size

SETTEXTSIZE 35 20

! Restore text size to default

SETTEXTSIZE

SETTITLE

Назначение:

Вводит название схемы, которое обычно появляется на всех графиках.

Синтаксис:

SETTITLE А$

SETTITLE "Here is the lens title"

SETUNITS

Назначение:

Устанавливает нужные единицы измерения для текущей схемы.

Синтаксис:

SETUNITS код

Обсуждение:

Это ключевое слово требует только одно числовое выражение, которое должно принимать значения от 0 до 3. Код 0 - для миллиметров, 1 - для сантиметров, 2 - для дюймов, 3 - для метров. Эта функция не масштабирует и не преобразует данные схемы каким-либо образом, она только изменяет интерпретацию данных, описывающих схему!

Пример:

SETUNITS 0 SETVAR

Назначение:

Устанавливает на параметры схемы статус переменной величины для оптимизации этих параметров.

24 -46                                                             Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Синтаксис:

SETVAR (поверхность), VARCODE, (статус)

Обсуждение:

Выражение поверхность должно давать целое число между 0 и максимальным числом определенных в схеме поверхностей; в противном случае будет ошибка! Выражение поверхность определяет номер поверхности, параметры которой должны быть сделаны переменными величинами.

Аргументу VARCODE должно быть присвоено одно из следующих символических обозначений:

r - для радиуса кривизны,

т      - для толщины,

с      - для конической постоянной,

Рn - для параметра номер n,

En - для внешних данных номер n.

Если выражение статус будет равно 0, то статус переменной величины будет снят;

в других случаях, для параметра будет установлен статус переменной величины.

Пример:

SETVAR j+3, R, 1

SETVAR 5, Р6, 0

SETVAR surfk+2, E06, status


SETVECSIZE

Назначение:

Изменяет максимальный размер матриц VEC1, VEC2, VEC3 и VEC4.

Синтаксис:

SETVECSIZE (выражение)

Обсуждение:

Выражение должно генерировать целое число между 1 и 100,000. Все четыре векторных матрицы всегда имеют один и тот же размер.

SETVJG

Назначение:

Устанавливает коэффициенты виньетирования для схемы.

Синтаксис:

SETVIG

Обсуждение:

Смотри главу "Conventions and Definitions", в которой дано описание коэффициентов виньетирования.

SHOWFILE

Назначение:

Выводит текст файла на экран.

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                        24-47


Синтаксис:

SHOWFILE "filename" save-флаг

SHOWFILE NAME$ save-флаг

Обсуждение:

Имя файла должно быть записано в кавычках, или должно быть указано имя строчной переменной, которой присвоено имя файла. Файл должен быть записан в формате ASCII (например, созданный командами OUTPUT и PRINT) и находиться в текущем директории. Как только файл появится на экране, он может быть прокручен вперед и назад и распечатан как другие текстовые файлы. Возможность просмотра и распе­чатки файла - главное преимущество команд OUTPUT и SHOWFILE перед простой командой PRINT. SHOWFILE также закрывает файл, если он не был закрыт командой CLOSE: если аргумент save-флаг равен нулю или отсутствует, то файл стирается из памяти после закрытия окна; если save-флаг имеет отличное от нуля значение, то после закрытия окна файл сохраняется.

Пример:

OUTPUT "test.txt"

PRINT "Print this to a file."

SHOWFILE "test.txt"

Связанные слова:

OPEN, OUTPUT, CLOSE, PRINT, PRINTFILE


SOLVETYPE

Назначение:

Изменяет статус функции solve и значения ее параметров для указанной поверхности; свяжитесь с фирмой FSI для получения информации об установке других типов solve.

Синтаксис:

SOLVETYPE (поверхность), код, (аргумент!), (аргумент2)

Обсуждение:

Выражение поверхность должно генерировать целое число между 0 и количеством заданных в схеме поверхностей, в противном случае будет ошибка. Код функции solve должен быть указан в соответствии с символическими обозначениями, приведенными в нижеследующей таблице.

CODES FOR SOLVETYPE KEYWORD

КОДЫ ДЛЯ КЛЮЧЕВОГО СЛОВА SOLVETYPE

 

Тип функции SOLVE   КОД  
Curvature Pickup   CP  
Thickness Pickup   TP  
Thickness Marginal Ray Height   TM  
Glass Pickup   GP  
Conic Pickup   KP  
Тип функции SOLVE   КОД  
Parameter 1-8 Pickup   P1, P2...P8  

 

Выражения аргумент1 и аргумент2 должны давать величины первого и второго параметров функции solve, как это определено в главе "Solves".

24-48                                                      Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Пример:

! The following line will add a glas pickup solve

! on surface 7, picking up from surface 5:

SOLVETYPE 7, GP, 5

! Add a thickness pickup with a scale factor of -1:

SOLVETYPE 7, TP, 5, -1

STOPSURF

Назначение:

STOPSURF устанавливает апертурную диафрагму системы на указанную поверхность.

Синтаксис:

STOPSURF (поверхность)

Обсуждение:

Это ключевое слово требует только одно выражение, которое должно оцениваться между 1 и числом, на единицу меньшим числа заданных в схеме поверхностей.

Пример;

STOPSURF n+2

Связанные слова:

UPDATE

SUB

Смотри GOSUB.

SURFTYPE

Назначение:

Изменяет тип указанной поверхности. Синтаксис:

SURFTYPE (поверхность), код

Обсуждение:

Выражение поверхность должно оцениваться целым числом между 0 и числом определенных в схеме поверхностей. Аргумент код - кодовое число, определяющее тип поверхности. Код может быть также задан с помощью функции SCOD.

Пример:

SURFTYPE j + 1, SCOD("STANDARD")

B$ = "EVENASPH"

SURFTYPE 5, SCOD(B$)

THIC

Назначение:

THIC используется для установки толщины указанной поверхности.

Синтаксис:

THIC (поверхность) = (новое_значение)

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-49


Обсуждение:

Это ключевое слово требует два выражения: одно для определения номера поверх­ности и другое для определения нового значения. Выражение поверхность вычис­ляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое значение и устанавли­вается новая величина толщины указанной поверхности.

Пример:

THIC i+m = THIC (i+n) - 1

Связанные слова:

UPDATE


TIMER

Назначение:

Устанавливает внутренние часы. Эта команда используется вместе с функцией ETIMQ для отсчета времени с момента выполнения последней команды TIMER.

Синтаксис:

TIMER

Обсуждение:

Команды TIMER и ETIMQ используются в основном для проверки эффективности ZPL интерпретатора и различных архитектур программ.

Пример:

i=0

TIMER

LABEL 1

x = RAND(1OOO)

i = i + 1

if i<10000 then GOTO 1

FORMAT.1

PRINT "Elapsed time: ", ETIM(), " Seconds"

UPDATE

Назначение:

По этой команде происходит обновление положения зрачка, показателей преломле­ния, параксиальных констант, полудиаметров, максимальных нормированных значе­ний поля и функций solve. Слово UPDATEдолжно использоваться перед трассиров­кой лучей или перед анализом системы, если параметры схемы (такие как радиусы и толщины) были изменены с момента вызова последней команды UPDATE. Если команда UPDATE сопровождается словом "ALL", то обновлены будут все открытые окна.

Синтаксис:

UPDATE

UPDATE ALL

24 -50                                                             Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Пример:

THIC 5 = ТН1С(5)-1

 UPDATE



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: