Используются функции семейства GET. дают возможность пользователю вводить данные в интерактивном режиме.
(getint [запрос]) — ввод целого числа в диапазоне от -32768 до +32767;
(setq num (getint))
(setq num (getint "Enter a number: ")) /"Введите число: "/
(getreal [запрос]) — ввод вещественного числа;
(setq val (getreal "Scale factor: "))
(getangle [точка] [подсказка]) – ввод угла (функция возвращает его в радианах). Начальная точка м.б. задана [точкой]. Если аргумент [точка] отсутствует, нужно вводить две точки (ANGBASE и ANGDIR).
(setq ang (getangle '(1.0 3.5) "Which way? ")) /"В какую сторону? "/
(getpoint [точка1][подсказка]) – ввод точки с помощью клавиатуры или мыши; если задан аргумент <точка1>, то при вводе точки с помощью мыши рисуется резиновая нить, начинающаяся в <точка1>;
setq p2 (getpoint '(1.5 2.0) "Second point:"))
(getdist [<точка1>] [запрос]) - получение расстояния (как вещественного числа) с помощью ввода числа или указания двух точек (мышью или в координатах на клавиатуре), если не задан аргумент <точка1>;
(setq dist (getdist '(1.0 3.5) "How far? ")) /"Kак далеко? "/
(getorient [<точка1>] [запрос]) — получение угла как в функции getangle, однако возвращаемое значение не учитывает значений ANGBASE и ANGDIR (т. е. как будто ANGBASE=0, ANGDIR=0);
(getcorner <точка1> [запрос]) — ввод точки; при вводе точки с помощью мыши рисуется резиновая рамка, начинающаяся в точке, заданной аргументом <точка1>;
(getcorner '(1.0 2.5) "...")
(initget биты строка) - задание ограничений ввода и ключевых слов;
Таблица 12.3. Значения битов функции initget
Бит Назначение
1 Не разрешает пустой ввод (пустой ввод— это нажатие только клавиши <Enter>)
2 Не разрешает ввод нуля
4 Не разрешает ввод отрицательных чисел
8 Разрешает указание точек за пределами лимитов, несмотря на значение системной переменной LIMCHECK
16 Данный бит не задействован
32 Заставляет AutoCAD использовать штриховую линию вместо сплошной для резиновой нити и резиновой рамки; если значение системной переменной POPUPS равно нулю, то AutoCAD игнорирует данный бит
64 Запрещает ввод третьей координаты для точки в функции getdist
128 Разрешает произвольный ввод в качестве ключевого слова; преобладает над другими битами и ключевыми словами; в частности, данный бит позволяет игнорировать значение бита 1
(initget 1) — не разрешен пустой ввод;
(initget 3) — не разрешены пустой ввод и ввод нуля (3=1+2);
(initget 7) — не разрешены пустой ввод, ввод нуля и ввод отрицательных чисел (7=1+2+4);
(initget 6) — разрешен пустой ввод, но не разрешены ввод нуля и ввод отрицательных чисел (6=2+4).
Аргумент <строка> функции initget — это строка, ограниченная двойными кавычками с двух сторон, которая задает ключевые слова, являющиеся допустимыми вариантами ввода. Варианты ключевых слов разделяются пробелом, например: "А Б В Г Д".
Если пользователю при выборе ключевого слова разрешаются сокращенные варианты, тогда обязательная часть ключевого слова и аргументе <строка> должна быть указана в верхнем регистре, например: "ПЕРесечение". В этом случае допустимыми вариантами ввода являются "ПЕР", "пер", "ПЕРЕ", "пере", "перес", "ПЕРЕСЕЧЕН", "ПЕРЕСЕЧЕНИЕ" (после трех обязательных букв может идти любое количество необязательных букв, вплоть до набора полного ключевого слова; при вводе букв верхний и нижний регистры равноправны); недопустимыми вариантами будут "П", "ПЕ", "п", "пе".
Возможны случаи, когда вариант сокращенного ввода начинается не с первой буквы ключевого слова, например:
(initget "выход") — здесь допустимыми вариантами ввода будут "х", "хо", "ход" или "выход", "вых", "выхо".
Если ключевое слово в аргументе <строка> указано только в верхнем или только в нижнем регистре, то рядом через запятую можно указать сокращенный вариант: "КРАСНЫЙ, КР" — равносильно записи "красный".
! Про локализ. Версии – в файлах
(initget 6) (setq numb (getint "Введите номер участка (<1>): "))
В этом примере сначала устанавливаются ограничения на будущий ввод целого числа (не допускаются ноль и отрицательные числа). Допускается пустой ввод. Функция getint выводит на экран запрос "Введите номер участка (<1>) : ". Ее возвращаемым значением будет nil, если пользователь ответит простым нажатием клавиши <Enter>, или введенное пользователем допустимое целое число (например, 17). В случае ввода пользователем недопустимого целого числа (например, 0 или -2) функция getint выведет сообщение об ошибочном значении и будет ожидать допустимого варианта ввода.
Далее предусмотрена обработка пустого ввода, чтобы в этом случае присвоить переменной numb значение по умолчанию (1):
(if (not numb) (setq numb 1))
Пример использования функции getint
(initget 6 "Левый Правый Нижний Верхний")
(setq numb (getint "Введите номер участка (<1>) или [Левый/Правый/Нижний/Верхний]: "))
В этом примере устанавливаются ограничения на будущий ввод целого числа (не допускаются ноль и отрицательные числа), однако допускаются пустой ввод и ввод одного из четырех ключевых слов.
(getkword [запрос]) — запрос на ввод ключевого слова (из определенных функцией initget;
(initget 1 "Да Нет")
(setq reply (getkword "Продолжить цикл [Да/Нет]: "))
В этом примере переменной reply присваивается значение "да" или "нет", пустой ввод не допускается.
(getstring [<флаг>] [<запрос>]) - ввод строки; если задан аргумент <флаг> и он отличен от nil, то в строке допускаются пробелы (признаком конца является <Enter>); если аргумент <флаг> отсутствует или задан равным nil, то признаком конца строки является пробел или <Enter>;
(setq s (getstring T "...."))
(setq s (getstring T "What's your first name? ")) /"Ваше имя? "/
getvar - чтение текущего значения системной переменной
(getvar "FILLETRAD") – 0.25
(getint [запрос]) — ввод целого числа в диапазоне от -32768 до +32767;
(setq num (getint))
(setq num (getint "Enter a number: ")) /"Введите число: "/
(getreal [запрос]) — ввод вещественного числа;
(setq val (getreal "Scale factor: "))
(getangle [точка] [подсказка]) – ввод угла (функция возвращает его в радианах). Начальная точка м.б. задана [точкой]. Если аргумент [точка] отсутствует, нужно вводить две точки (ANGBASE и ANGDIR).
(setq ang (getangle '(1.0 3.5) "Which way? ")) /"В какую сторону? "/
(getpoint [точка1][подсказка]) – ввод точки с помощью клавиатуры или мыши; если задан аргумент <точка1>, то при вводе точки с помощью мыши рисуется резиновая нить, начинающаяся в <точка1>;
setq p2 (getpoint '(1.5 2.0) "Second point:"))
(getdist [<точка1>] [запрос]) - получение расстояния (как вещественного числа) с помощью ввода числа или указания двух точек (мышью или в координатах на клавиатуре), если не задан аргумент <точка1>;
(setq dist (getdist '(1.0 3.5) "How far? ")) /"Kак далеко? "/
(getorient [<точка1>] [запрос]) — получение угла как в функции getangle, однако возвращаемое значение не учитывает значений ANGBASE и ANGDIR (т. е. как будто ANGBASE=0, ANGDIR=0);
(getcorner <точка1> [запрос]) — ввод точки; при вводе точки с помощью мыши рисуется резиновая рамка, начинающаяся в точке, заданной аргументом <точка1>;
(getcorner '(1.0 2.5) "...")
(initget биты строка) - задание ограничений ввода и ключевых слов;
Таблица 12.3. Значения битов функции initget
Бит Назначение
1 Не разрешает пустой ввод (пустой ввод— это нажатие только клавиши <Enter>)
2 Не разрешает ввод нуля
4 Не разрешает ввод отрицательных чисел
8 Разрешает указание точек за пределами лимитов, несмотря на значение системной переменной LIMCHECK
16 Данный бит не задействован
32 Заставляет AutoCAD использовать штриховую линию вместо сплошной для резиновой нити и резиновой рамки; если значение системной переменной POPUPS равно нулю, то AutoCAD игнорирует данный бит
64 Запрещает ввод третьей координаты для точки в функции getdist
128 Разрешает произвольный ввод в качестве ключевого слова; преобладает над другими битами и ключевыми словами; в частности, данный бит позволяет игнорировать значение бита 1
(initget 1) — не разрешен пустой ввод;
(initget 3) — не разрешены пустой ввод и ввод нуля (3=1+2);
(initget 7) — не разрешены пустой ввод, ввод нуля и ввод отрицательных чисел (7=1+2+4);
(initget 6) — разрешен пустой ввод, но не разрешены ввод нуля и ввод отрицательных чисел (6=2+4).
Аргумент <строка> функции initget — это строка, ограниченная двойными кавычками с двух сторон, которая задает ключевые слова, являющиеся допустимыми вариантами ввода. Варианты ключевых слов разделяются пробелом, например: "А Б В Г Д".
Если пользователю при выборе ключевого слова разрешаются сокращенные варианты, тогда обязательная часть ключевого слова и аргументе <строка> должна быть указана в верхнем регистре, например: "ПЕРесечение". В этом случае допустимыми вариантами ввода являются "ПЕР", "пер", "ПЕРЕ", "пере", "перес", "ПЕРЕСЕЧЕН", "ПЕРЕСЕЧЕНИЕ" (после трех обязательных букв может идти любое количество необязательных букв, вплоть до набора полного ключевого слова; при вводе букв верхний и нижний регистры равноправны); недопустимыми вариантами будут "П", "ПЕ", "п", "пе".
Возможны случаи, когда вариант сокращенного ввода начинается не с первой буквы ключевого слова, например:
(initget "выход") — здесь допустимыми вариантами ввода будут "х", "хо", "ход" или "выход", "вых", "выхо".
Если ключевое слово в аргументе <строка> указано только в верхнем или только в нижнем регистре, то рядом через запятую можно указать сокращенный вариант: "КРАСНЫЙ, КР" — равносильно записи "красный".
! Про локализ. Версии – в файлах
(initget 6) (setq numb (getint "Введите номер участка (<1>): "))
В этом примере сначала устанавливаются ограничения на будущий ввод целого числа (не допускаются ноль и отрицательные числа). Допускается пустой ввод. Функция getint выводит на экран запрос "Введите номер участка (<1>) : ". Ее возвращаемым значением будет nil, если пользователь ответит простым нажатием клавиши <Enter>, или введенное пользователем допустимое целое число (например, 17). В случае ввода пользователем недопустимого целого числа (например, 0 или -2) функция getint выведет сообщение об ошибочном значении и будет ожидать допустимого варианта ввода.
Далее предусмотрена обработка пустого ввода, чтобы в этом случае присвоить переменной numb значение по умолчанию (1):
(if (not numb) (setq numb 1))
Пример использования функции getint
(initget 6 "Левый Правый Нижний Верхний")
(setq numb (getint "Введите номер участка (<1>) или [Левый/Правый/Нижний/Верхний]: "))
В этом примере устанавливаются ограничения на будущий ввод целого числа (не допускаются ноль и отрицательные числа), однако допускаются пустой ввод и ввод одного из четырех ключевых слов.
(getkword [запрос]) — запрос на ввод ключевого слова (из определенных функцией initget;
(initget 1 "Да Нет")
(setq reply (getkword "Продолжить цикл [Да/Нет]: "))
В этом примере переменной reply присваивается значение "да" или "нет", пустой ввод не допускается.
(getstring [<флаг>] [<запрос>]) - ввод строки; если задан аргумент <флаг> и он отличен от nil, то в строке допускаются пробелы (признаком конца является <Enter>); если аргумент <флаг> отсутствует или задан равным nil, то признаком конца строки является пробел или <Enter>;
(setq s (getstring T "...."))
(setq s (getstring T "What's your first name? ")) /"Ваше имя? "/
getvar - чтение текущего значения системной переменной
(getvar "FILLETRAD") – 0.25