\r для return возврат,ввод
\t для tab табуляция
\nnn для символов,чей восьмиричный код nnn
Таким образом:
(prin1 (chr 2)) печатает "\002" и вводит "\002"
(prin1 (chr 10)) печатает "\n" и вводит "\n"
4.89.(princ <expr>[<file-desc>])
Эта функция такая же, как PRIN1, кроме того, что контрольные символы в <expr> печатаются без расширения. В общем, PRIN1 разработан для написания выражений в таком виде, чтобы они были совместимы с функцией LOAD , в то время как PRINC будет печатать их в пригодном для чтения функцией READ-LINE виде.
4.90. (print <expr>[<file-desc>])
Эта функция такая же, как PRIN1, кроме того, что новые линии печатаются перед <expr>, а в промежутке печатается следующее выражение.
4.91. (progn <expr>...)
Эта функция последовательно вычисляет каждое <выражение> и вводит значение последнего выражения. Вы можете применять PROGN для вычисления нескольких выражений, где предусматривается только одно выражение. Например:
(if (=a b) (progn
(setq a (+a 10)
(setq b (-b 10)
)
Функция IF нормально вычисляет одно выражение "then", если тестовое выражение вычисляется к чему-либо отличному от нуля. В этом примере мы применяли PROGN для вычисления двух выражений вместо первоначального.
4.92.(prompt <msg>)
Эта функция высвечивает на экране в зоне подсказок <msg>/сообщение и вводит ноль. <msg> - строка. В двухэкранной конфигурации АвтоКАДа, функция PROMPT высвечивает <msg> на обоих экранах и поэтому предпочтительна для PRINC. Например:
(prompt "New value:")
на экранах появится "New value:" и вводится ноль.
4.93.(quote <expr>)
Вводит невычисляемое <выражение>. Она также может быть записана следующим образом:
'expr
Например:
(quote a) вводит A
(quote cat) вводит CAT
(quote (a b)) вводит (A B)
'a вводит A
'cat вводит CAT
'(a b) вводит (A B)
4.94. (read <string>)
Эта функция вводит первый перечень или атом, полученные из <строки>. <строка> не должна содержать пробелов. Например:
(read "hello") вводит HELLO
(read "hi") вводит HI
(read "(a)") вводит (A)
4.95.(read-char [<file-desc>])
Эта функция читает единичный символ из буфера ввода клавиатуры или из открытого файла, описанного в <file-desc>. Она вводит (целое число) ASCII код, представляющий возможность прочесть символ.
Если <file-desc> не определен, а в буфере ввода клавиатуры нет символов, READ-CHAR ждет, пока вы что-либо напечатаете с клавиатуры (сопроводжая запись клавишей RETURN !). Например, предположим, что буфер ввода клавиатуры пуст:
(read-char)
будет ждать, чтобы что-то было введено. Если вы напечатаете "A B C", а затем нажмете RETURN, READ-CHAR введет 65 (код ASCII для буквы "A"). На следующие вызовы READ-CHAR введет 66, 67 и 10 (новая линия) соответственно. Если затем будут произведены следующие вызовы READ-CHAR, она опять будет ждать ввод.
4.96. (read-line [<file-desc>])
Эта функция читает строку с клавиатуры или из открытого файла, описанного в <file-desc>. Если конец файла не вычисляется, READ-LINE вводит ноль, в противном случае она вводит строку, которая была прочитана. Предположим, что F - действительный поинтер открытого файла:
(read-line f)
введет следующую входную линию из файла, или ноль, если был достигнут конец файла.
4.97 (redraw [<ename>[<mode>]])
Эффект функции зависит от количества заданных параметров. Если вызов без параметров,
(redraw)
он перерисует весь чертеж, как команда АвтоКАДа REDRAW. Если вызов с параметром имени объекта,
(redraw <ename>)
перечерчен будет выбранный объект. Это полезно при определении объекта на экране после применения GRCLEAR для очистки экрана.
Завершение контроля над перечерчиванием объекта осуществляется вызовом REDRAW с двумя параметрами:
(<ename><mode>)
где <ename> - имя объекта, который будет перечерчен, а <mode> - целое число с одним из следующих значений:
Redraw Mode | Action/действие |
1 | Перечертить объект на экране |
2 | Уничтожить объект (внести пробелы) |
3 | Высвечивание объекта (если позволяет дисплей) |
4 | Отмена высвечивания объекта (если позволяет дисплей) |
Если <ename> - заголовок или комплексный объект (Полилиния или Блок с дополнениями), главный объект и все его подобъекты будут отрабатываться, если параметр <mode> положительный. Если параметр <mode> отрицательный, управляемый функцией REDRAW будет только один заголовок. Если ошибок нет, REDRAW всегда вводит ноль.
4.98.(rem <num1><num2>...)
Эта функция делит <num1> на <num2> и вводит остаток (<num1> вычисляет остаток <num2>). <num1> mod <num2> mod - модуль операция вычисления остатка.
REM может применяться с действительными и целыми числами со стандартными правилами перевода. Например:
(rem 42 12) вводит 6
(rem 12.0 16) вводит 12.000000
(rem 60 3) вводит 0
4.99.(repeat <number><expr>...)
В этой функции <число> представляет любое из положительных целых чисел. Функция вычисляет каждое <expr> <number> количество раз и вводит значение последнего выражения. Например, заданы назначения:
(setq a 10)
(setq b 100)
тогда:
(repeat 4
(setq a(+ a 10)))
(setq b(+ b 10)))
) вводит 140
4.100.(reverse <list>)
Эта функция вводит <список> с зарезервированными элементами. Например:
(reverse '((a)b c)) вводит (C B (A))
4.101. (rtos <number>[<precision>])
Эта функция вводит строку, которая является представлением <числа> (действительного) согласно с установками <mode>/ режим и <precision>/точность и переменной, задающей размеры АвтоКАДа DIMZIN. <режим> и <точность> - целые числа, которые выбирают линейные элементы режима и точности. Ниже перечислены обеспеченные значения <режима>:
RTOS Режим | Редактируемый формат |
1 | Научный |
2 | Десятичный |
3 | Прикладной (футы и десятичные дюймы) |
4 | Архитектурный (футы и дробные дюймы) |
5 | Производные дробные элементы |
Параметры <mode> и <precision> соответствуют системе переменных LUNITS и LUPREC АвтоКАДа. Если вы пропускаете параметры, будут применяться текущие установки LUPREC и LUNITS. Примеры RTOS:
(rtos 17.5 1 4) вводит "1.7500E+01"
(rtos 17.5 2 2) вводит "17.50"
(rtos 17.5 3 2) вводит "1'-5.50""
(rtos 17.5 4 2) вводит "1'-5 1/2""
(rtos 17.5 5 2) вводит "17 1/2"
Глава 5. Разработка интерфейсов пользователя
5.1. Меню пользователя
Меню пользователя служит для расширения и дополнения существующего и разработки собственного меню. Меню пользователя задается в файле меню.Файлы меню представляют собой текстовые файлы.
Исходные файлы меню имеют расширение .mnu. Компилированные файлы имеют расширение .mnx. LISP-файлы меню имеют расширение .mnl. Эти файлы автоматически загружаются в память при загрузке файла меню с таким же именем и содержат LISP-выражения, которые могут использоваться файлом меню. Файлы определения меню имеют расширение .mnd. Они являются специальными исходными файлами, содержащими макросы. Файлы этого типа компилируются с помощью программы mc, которая размещена в каталоге SAMPLE.
Файл .mnu компилируется, и создается файл с расширением .mnx, который имеет компактный внутренний формат, позволяет значительно быстрее осуществлять загрузку меню. При создании нового рисунка файл меню с именем, указанным в рисунке-прототипе, загружается автоматически. АвтоКАД предоставляет возможность заменить это меню на новое. Для компиляции и загрузки меню используется команда menu (меню). При этом АвтоКАД записывает в файл рисунка имя последнего использовавшегося с ним меню; при последующем редактировании этого рисунка меню загружается автоматически. Команда menu загружает файл меню с диска:
Command: MENU
Для задания имени файла на экран выводится стандартное диалоговое окно файлов с заголовком «Выбор файла меню». АвтоКАД ищет файл с расширением .mnu, если он найден, то ищет файл с расширением .mnx, и если MNX-файл имеет те же дату и время создания, что и MNU-файл, он загружается АвтоКАДом. Иначе компилируется MNU-файл и загружается MNX-файл. Если MNU-файл не найден, АвтоКАД ищет MNX-файл. Если MNX-файл найден, АвтоКАД его загружает, иначе высвечивается сообщение об ошибке и запрос на ввод другого файла меню.
Если отключена системная переменная FILEDIA, можно воспользоваться командной строкой для загрузки меню:
Command: MENU : (Команда: МЕНЮ)
Menu file name or . for none <current>: : (Имя файла меню или . если оно не нужно <текущее имя>:
Имя файла задается без расширения.
Иногда имеет смысл полностью убрать меню, например, для очистки зоны экранного меню. Для этого необходимо ввести «.» в ответ на запрос команды MENU.
5.2. Структура файла меню
Файл меню можно логически разбить на разделы, каждый из которых относится к некоторому устройству, поддерживающему работу с меню, и содержит командные строки, предназначенные для этого устройства. Разделы идентифицируются с помощью меток разделов:
***SCREEN - экранное меню;
***BUTTONSn - кнопочное меню устройства указания, где n - число от 1 до 4;
***AUXn - дополнительное кнопочное меню, где n - число от 1 до 4;
***POPn - падающие и курсорные меню, где n - число от 1 до 16;
***ICON - графическое меню;
***TABLETn - область меню планшета, где n - число от 1 до 4.