ZPL поддерживает строчные переменные и операции с ними. Строчные переменные не нуждаются в их заблаговременном объявлении, а могут создаваться в любое время путем определения операций, таких как:
newstring$ = "Here is the new string"
Заметьте, что строчная переменная отличается от числовой переменной наличием в конце первой знака $. Строчные переменные могут быть соединены между собой с помощью оператора +. Синтаксис такого соединения следующий:
total$ = "A$ is " + A$ +" and B$ is " + B$
Есть также функции строчных переменных, которые могут быть использованы для извлечения текстовых данных, такие как:
title$ = $LENSNAME()
Заметьте, что функция $LENSNAME () начинается с знака $. Это идентифицирует функцию строчной переменной как функцию, производящую строчный результат. Функции строчных переменных могут быть использованы для определения таких операций, как:
this$ = "Here is the lens title: " + $LENSNAME ()
Строчные переменные выводятся на печать точно таким же образом, как другие строчки:
PRINT "Here is A$: ", A$
Заметьте, что функция PRINT может выводить на печать только одну единственную строчную переменную; нет возможности для связывания операторов или строчных
|
|
24-12 Chapter 24: ZEMAX PROGRAMMING LANGUAGE
функций внутри операции печати. Правильная процедура для связывания строк в новую строку с последующей ее печатью выглядит так:
А$ = В$ + С$
PRINT A$
Альтернативой этому является использование запятой для связки операторов:
PRINT А$, В$, С$
Функции строчных переменных не могут печататься непосредственно, например, как:
PRINT $LENSNAME ()! NOT CORRECT!!!
Вместо этого следует результат функции записать в виде новой строчной переменной и затем печатать эту новую переменную:
Z$ = $LENSNAME()
PRINT Z$
Одна очень важная функция - это $STR (). Эта функция имеет в качестве аргумента какое-либо числовое выражение. Функция $STR полезна для внесения числовых данных в строчки:
A$ = "The expression evaluates to " + $STR (SQRT (3*3+4*4+z*y))
В нижеследующей таблице перечислены имеющиеся функции строчных переменных.
ZPL STRING FUNCTIONS ФУНКЦИИ СТРОЧНЫХ ПЕРЕМЕННЫХ
| |
Функции | Описание (Принимаемое значение) |
$COMMENT(i) | Строка комментария для i-поверхности. Берется из Lens Data Editor |
$DATE() | Текущее время и дата. Берется из диалогового окна Environment Text Data. |
$FILENAME() | Имя файла текущей схемы без записи директория. |
$FILEPATH() | Имя файла текущей схемы с полной записью директория. |
$GLASS(i) | Имя стекла i-поверхности. |
$LENSNAME() | Наименование схемы, определенное в диалоговом окне General System. |
$NOTE(line#) | Примечание к схеме, определенное в диалоговом окне General System. |
$PATHNAME() | Имя директория и поддиректория, в котором записан файл с текущей схемой. Это полезно для определения поддиректория, в котором записана схема. |
$STR(expression) | Записывает результат вычислений в формате, заданном ключевым словом FORMAT. Числовым выражением может быть какое-либо уравнение, включая комбинацию постоянных, переменных и функций. |
$UNITS() | Принимает значения MM, CM, IN или М в зависимости от того, какие выбраны и используются единицы измерения. |
|
|
Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX 24-13
ZPL keywords
Ключевые слова ZPL
С помощью ключевых слов обеспечивается управление программой, генерация выходных данных и решение некоторых важных задач, таких как трассировка лучей и модификация установок в схеме. Каждое ключевое слово детально описано в следующем разделе. Некоторые ключевые слова с подобными или сходными функциями сгруппированы вместе.
APMN. АРМХ
Назначение:
Используется для установки максимального и минимального радиусов апертуры для указанной поверхности.
Синтаксис:
APMN(поверхность)=(новое_значение) АРМХ(поверхность) = (новое значение)
Обсуждение:
Эти ключевые слова требуют два выражения: одно, определяющее номер поверхности, и другое - для определения новой величины радиуса. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое_значение и устанавливаются новые величины минимального радиуса (APMN) и максимального радиуса (АРМХ) апертуры.
Минимальные и максимальные величины радиусов используются для всех видов апертур, хотя они имеют различный смысл в зависимости от типа используемой апертуры, как это описано в нижеследующей таблице.
Тип апертуры | APMN используется для установки: |
None | Игнорируется |
Circular aperture | Минимального радиуса круглой апертуры |
Circular obscuration | Минимального радиуса круглого экрана |
Spider | Ширины растяжек |
Rectangular aperture | Полуширины прямоугольной апертуры по оси Х |
Rectangular obscuration | Полуширины прямоугольного экрана по оси Х |
Elliptical aperture | Полуширины эллиптической апертуры по оси Х |
Elliptical obscuration | Полуширины эллиптического экрана по оси Х |
User aperture | Игнорируется |
User obscuration | Игнорируется |
Floating aperture | Игнорируется |
Пример:
APMN(3)=1.75
АРМХ(З) =3.50
24-14 Chapter 24: ZEMAX PROGRAMMING LANGUAGE
APXD.APYD
Назначение:
Используется для установки величины децентрировки апертуры поверхности по осям Х и Y.
Синтаксис:
APXD(поверхность) = (новое значение) APYD(поверхность) = новое значение)
Обсуждение:
Эти ключевые слова требуют два выражения: одно для определения номера поверхности и другое для определения нового значения. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое значение и устанавливаются новые величины децентрировки апертуры поверхности по оси Х (APXD) и по оси Y (APYD).
Пример:
APXD(3) = -3.6
APYD(5) = -1 * APYD(3)
АРТР
Назначение:
Используется для установки типа апертуры поверхности.
|
|
Синтаксис:
АРТР (поверхность) = (кодовое число)
Обсуждение:
Эти ключевые слова требуют два выражения: одно для определения номера поверхности и другое для определения нового типа апертуры. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение кодовое число; полученная величина округляется до целого и устанавливается новый тип апертуры. Кодовые числа различных типов апертур приведены в нижеследующей таблице.
Кодовое число | Тип апертуры |
0 | None |
1 | Circular aperture |
2 | Circular obscuration |
3 | Spider |
4 | Rectangular aperture |
5 | Rectangular obscuration |
6 | Elliptical aperture |
7 | Elliptical obscuration |
8 | User aperture |
Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX 24-15
Кодовое число | Тип апертуры |
9 | User obscuration |
10 | Floating aperture |
Пример:
АРТР (З) = 1
ATYP. AVAL
Назначение:
Используется для установки типа апертуры системы и ее значения.
Синтаксис:
ATYP = (кодовое_число)
AVAL = (новое_значение)
Обсуждение:
Эти ключевые слова используются для определения типа апертуры системы и задания ее величины. Тип апертуры системы определяется с помощью следующих кодовых чисел:
Тип апертуры | Кодовое число |
Entrance Pupil Diameter | 0 |
Image Space F/# | 1 |
Object Space Numerical Apertute | 2 |
Float By Stop Size | 3 |
Пример:
! Set the EPD to be 35
ATYP = 0
AVAL =35.0
CLOSE
Назначение:
Закрывает ASCII файл, открытый ранее командой OPEN.
Синтаксис:
CLOSE
Обсуждение:
Смотри описание команды OPEN.
CLOSEWINDOW
Назначение:
Не позволяет появляться на экране окну с выходными данными.
Синтаксис:
CLOSEWINDOW
Обсуждение:
Команда CLOSEWINDOW используется для выполнения ZPL программы в быстром режиме. Обычно появляющееся на экране после выполнения программы окно с выходными данными не будет высвечиваться после этой команды, записанной в
|
|
24-16 Chapter 24: ZEMAX PROGRAMMING LANGUAGE
любую строку программы. Эта команда не оказывает никаких других действий на выполнение программы.
COLOR
Назначение:
Установка цвета, используемого для линий в графиках и в тексте.
Синтаксис:
COLOR(n)
Обсуждение:
Число n должно быть целым. Если аргумент n равен нулю, то цвет устанавливается черным. В противном случае, цвет, определенный целым числом, будет использоваться для всех линий и текста, записанного в графическом режиме. В распоряжении имеется 12 различных цветов плюс черный цвет; эти цвета имеют нумерацию от 0 до 12. Цвета обычно используются в ZEMAX для выделения различных полей и длин волн; цвет 1 может быть использован либо для выделения поля 1, либо для выделения длины волны 1, и так далее.
CONI
Назначение:
Слово CONI используется для задания величины конической постоянной для указанной поверхности.
Синтаксис:
CONI(поверхность) = (новое_значение)
Обсуждение:
Ключевое слово CONI требует два выражения: одно - для определения номера поверхности и второе - для определения новой величины конической постоянной. Выражение поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое значение и устанавливается новая величина конической постоянной.
Пример:
CONI 1 = - 1
Родственные слова:
UPDATE
CURV
Назначение:
Слово CURV используется для задания величины кривизны указанной поверхности.
Синтаксис:
CURV(поверхность) = (новое значение)
Обсуждение:
Ключевое слово CURV требует два выражения: одно - для определения номера поверхности и второе - для задания кривизны этой поверхности. Выражение
Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX 24-17
поверхность вычисляется и затем округляется до меньшего целого числа, которое и определяет номер поверхности. Если вычисленный номер поверхности окажется меньше нуля или будет больше числа заданных в схеме поверхностей, то эта команда просто игнорируется. Во всех других случая вычисляется выражение новое_значение и устанавливается новая величина кривизны поверхности.
Пример:
CURV(3) = - CURV(4) + 0.00.1
Родственные слова:
UPDATE DELETE
Назначение:
Удаляет поверхность из таблицы редактора.
Синтаксис:
DELETE (n)
Обсуждение:
Число n должно быть целым. Смотри также INSERT.
Пример:
DELETE 5
DELETE I + 2 * j
EDVA
Назначение:
Задние величин внешних (дополнительных) данных для поверхности.
Синтаксис:
EDVA поверхность, ed значение, новое значение
Обсуждение:
Выражение поверхность указывает номер поверхности, которая должна быть модифицирована. Выражение ed значение должно быть целым числом, соответствующим одной из позиций в записи внешних данных. Смотри главу "Surface types", в которой описаны внешние данные. Выражение новое_значение вычисляется и полученная величина присваивается указанному номеру внешних данных для данной поверхности.
Пример:
EDVA 5, 6, x+y
DELETE i + 2 * j
END
Смотри GOSUB.
FINDFILE
Назначение:
Используется для нахождения (имен) файлов, записанных на диск.
24 -18 Chapter 24: ZEMAX PROGRAMMING LANGUAGE
Синтаксис:
FINDFILE TEMPNAME$, FILTER$
Обсуждение:
Это ключевое слово требует два выражения: одного - для определения названия строчной переменной, которая будет использоваться для записи имени файла, и другого (содержащего строку "filter") - для определения строчной переменной, которая будет использоваться для записи пути к файлу. Строка "filter" обычно определяет путь к файлу и символ, описывающий тип файла. Смотри данный ниже пример. Команда FINDFILE полезна для получения списка всех файлов определенного типа, содержащихся в директории, или для анализа большого числа файлов с подобными схемами.
Пример:
FILTER$ = "C:\ZEMAX\ *.ZMX"
PRINT "Listing of all ZEMAX files in ", FILTER$
FINDFILE TEMPFILE$, FILTER$
LABEL 1
If (SLEN(TEMPFILE$))
PRINT TEMPFILE$
FINDFILE TEMPFILE$, FILTER$
GOTO 1
ENDIF
PRINT "No more files."