Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Функции ввода данных
Функция initget Задает ограничения последующего ввода данных. (initget [< флаг> ] [< строка> ]) Вызов функции initget должен предшествовать в программе обращению к функциям getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, поскольку именно для них устанавливаются ограничения. В частности, initget может сохранять за пользователем возможность нажатия клавиши < Enter> вместо ввода данных (например, для выбора значения по умолчанию), а может и не сохранять. Отсутствие вызова функции initget перед обращением к функциям getint, getreal и т. п. означает, что в этом обращении нет ограничений на ввод данных. Аргумент < флаг> функции initget — это битовый флаг, который должен быть целым числом (от 0 до 255), являющимся суммой битов с соответствующими каждому из них весовыми значениями (нумеруются по степеням числа 2). Если бит не установлен, то его значение в битовом флаге считается равным нулю.
(initget 1) — не разрешен пустой ввод (initget 3) — не разрешены пустой ввод и ввод нуля (3 = 1+2) (initget 7) — не разрешены пустой ввод, ввод нуля и ввод отрицательных чисел (7=1+2 + 4) (initget 6) — разрешен пустой ввод, но не разрешены ввод нуля и ввод от-рицательных чисел (6 = 2 + 4) Аргумент < строка> функции initget — это строка, ограниченная двойными кавычками, которая задает ключевые слова, являющиеся допустимыми вариантами ввода. В аргументе < строка> различные варианты ключевых слов разделяются одним или большим количеством пробелов, например: " А Б В Г Д". Если пользователю при выборе ключевого слова разрешаются сокращенные варианты, тогда обязательная часть ключевого слова в аргументе < строка> должна быть указана в верхнем регистре, например: " ПЕРесечение". В этом случае к допустимым относятся любые следующие варианты ввода: " ПЕР", " пер", " ПЕРЕ", " пере", " перес", " ПЕРЕСЕЧЕН", " ПЕРЕСЕЧЕНИЕ" (после трех обязательных букв может идти любое количество необязательных букв, вплоть до набора полного ключевого слова; при вводе букв верхний и нижний регистры равноправны); недопустимыми вариантами будут " П", " ПЕ", " п", " пе". Возможны случаи, когда вариант сокращенного ввода начинается не с первой буквы ключевого слова, например: (initget " выХод") Здесь допустимыми вариантами ввода будут " х", " хо", " ход" или " выход", " вых'\ " выхо". Если ключевое слово в аргументе < строка> указано только в верхнем или только в нижнем регистре, то рядом через запятую можно указать сокращенный вариант: " КРАСНЫЙ, КР" это равносильно записи " КРасный". В локализованных (т. е. переведенных на другие языки) версиях систем AutoCAD в аргументе < строка> могут присутствовать варианты ввода как для локализованной, так и для английской версий. Тогда в начале должны идти локализованные ключевые слова, а затем их английские аналоги, причем первый английский аналог обязан начинаться с символа подчеркивания. Количество локализованных ключевых слов должно равняться количеству английских ключевых слов. Например: " Прямой Криволинейный _Straight Curved". В ЭТОМ случае даже при вводе русского варианта будет возвращаться английское значение (" Straight" или " Curved"). Сама функция initget всегда возвращает nil. Однако за ней (не обязательно в следующей строке) должна идти функция, для которой функция initget установила ограничения ввода. В качестве возвращаемого значения эта функция (например, getreal) выдаст допустимое значение, указанное пользователем, причем в случае ввода сокращенного варианта ключевого слова – полный вариант ключевого слова. Поскольку не все биты функции initget используются со всеми функциями ввода данных, то в табл. разбираются/варианты применения (в случае возможности использования ставится плюс). Функция getkword Дает возможность пользователю ввести допустимое ключевое слово. (getkword [< запрос> ]) Аргумент < запрос> — произвольная текстовая строка. Возвращаемое значение (ключевое слово или nil) зависит от допустимых ключе- вых слов и битов, установленных соответствующим предварительным вызовом (initget 1 " Да Нет") (setq reply (getkword " Преобразовать линию? [Да/Нет]: ")) В этом примере функция getkword ВЫВОДИТ запрос " Преобразовать линию [Да/нет]: " и ожидает ответа пользователя. По окончании ввода пользователей допустимого ответа LISP присваивает переменной reply значение " Да" или " Нет" Если введен недопустимый ответ, то генерируется сообщение об ошибке, и сново повторяется предыдущий запрос. Пустой ввод не допускается (хотя, изменив значение битового флага, можно было бы разрешить пустой ввод и далее использовать этот вариант для выбора значения по умолчанию). Функция getint Дает возможность пользователю ввести целое число (в диапазоне от -32 768 до +32 767) или допустимое ключевое слово. (getint [< запрос> ]) Аргумент < запрос> — произвольная текстовая строка. Возвращаемое значение — целое число, ключевое слово или nil. Зависит от допустимых ключевых слов и битов, установленных соответствующим предварительным вызовом функции initget. (initget 6) (setq num (getint " Введите номер детали < 1>: "))
В этом примере сначала устанавливаются ограничения на будущий ввод целого числа (не допускаются нуль и отрицательные числа). Разрешен пустой ввод Функция getint выводит на экран запрос " Введите номер детали < 1>: Ее вовращаемым значением будет nil, если пользователь ответит простым нажатие клавиши < Enter>, или введенное пользователем допустимое целое число (напрмер, 21). В случае ввода пользователем недопустимого целого числа (например -5) функция getint выдаст сообщение об ошибочном значении и будет ожидать допустимого варианта ввода. (initget 6 " Левый Правый Нижний Верхний") (setq num (getint " Номер или [Левый/Правый/Нижний/Верхний] < 2>: ")) (if (not num) (setq num 1)) В этом примере устанавливаются ограничения на будущий ввод целого числа (не допускаются нуль и отрицательные числа), однако разрешены пустой ввод и ввод одного из четырех ключевых слов. Далее в программе должен идти анализ значения переменной num на nil, на положительное целое число и на ключевые слова (" Левый", " Правый", " Нижний", " Верхний").
Функция getreal Дает возможность пользователю ввести вещественное число или допустимое ключевое слово. (getreal [< запрос> ]) Аргумент < запрос> — произвольная текстовая строка. Возвращаемое значение — вещественное число, ключевое слово или nil. Зависит от допустимых ключевых слов и битов, установленных соответствующим предварительным вызовом функции initget. Пример: (setq х2 (getreal " Вторая координата: ")) Функция getdist Получает в интерактивном режиме расстояние или просто вещественное число 0 помощью ввода этого числа (на клавиатуре в текущих линейных единицах) или с помощью двух точек (указанных мышью или в координатах на клавиатуре). выбор варианта ввода (числом или точками) предоставляется пользователю. (getdist [< точка1> ] [< запрос> ]) Типы аргументов: < точка1> — список из двух или трех чисел (координаты двумерной или трехмерной точки), < запрос> — произвольная текстовая строка. Вариант ввода числа в ответ на запрос функции getdist доступен пользователю независимо от наличия аргумента < точка1>. Если аргумент < точка1> задан, то расстояние вычисляется либо с помощью ввода числа (на клавиатуре), либо указанием одной точки, до которой будет рассчитано расстояние от точки, заданной аргументом < точка1>. Если аргумент < точка1> не задан, то расстояние вычисляется либо с помощью ввода числа (на клавиатуре), либо с помощью указания двух точек. Возвращаемое значение— вещественное число (в текущей форме линейных единиц), ключевое слово или nil. Зависит от допустимых ключевых слов и битов, установленных соответствующим предварительным вызовом функции initget. Пример: (setq dse (getdist '(15.0 27.2) " Новое расстояние: "))
Функция getangle Получает в интерактивном режиме угол (как вещественное число в радианах) с помощью ввода числа (на клавиатуре в текущих угловых единицах) или с помощью двух точек (уазанных мышью или в координатах на клавиатуре). Выбор варианта ввода (числом или точками) предоставляется пользователю. (getangle [< точка1> ] [< запрос> ]) Типы аргументов: < точка1> — список из двух или трех чисел (координаты двумерной или трехмерной точки), < запрос> — произвольная текстовая строка. Возвращаемое значение — вещественное число, ключевое слово или nil. Зависит от допустимых ключевых слов и битов, установленных соответствующим предварительным вызовом функции initget. Вариант ввода числа в ответ на запрос функции getangle доступен пользователю независимо от наличия аргумента < точка1>. Если аргумент < точка1> задан, то угол вычисляется либо с помощью ввода числа (на клавиатуре в радианах), либо с помощью указания одной точки (мышью или на клавиатуре). В последнем случае рассчитывается угол, который относительно нулевого направления (обычно это положительное направление оси X) образуе отрезок, идущий из точки < точка1> до точки, указанной пользователем. Если аргумент < точка1> не задан, то угол вычисляется либо с помощью ввода числа (на клавиатуре в радианах), либо с помощью указания двух точек. В последнем случае рассчитывается угол, который образует отрезок, идущий из первой указанной пользователем точки во вторую. При вводе угла с помощью числа он принимается с учетом значения системны переменных ANGBASE и ANGDIR; возвращаемое значение учитывает значена ANGBASE и игнорирует значение ANGDIR. Пример: (setq ange (getangle '(15.0 27.2) " Угол между ними: "))
Функция getpoint Дает возможность пользователю ввести точку с помощью клавиатуры или мыши. Если задан аргумент < точка1>, то при вводе точки с помощью мыши рисуется резиновая нить, начинающаяся в точке, заданной аргументом < точка1>. (getpoint [< точка1> ] [< запрос> ]) Типы аргументов: < точка1> — список из двух или трех чисел (координаты двумерной или трехмерной точки), < запрос> — текстовая строка. Возвращаемое значение— список (координаты трехмерной точки в текущей системе координат), ключевое слово или nil. Зависит от допустимых ключевых слов и битов, установленных соответствующим предварительным вызовом функции initget. Пример: (setq pt0 (getpoint '(15.0 27.2) " Следующая точка: ")) Функция getstring Дает возможность пользователю ввести строку с клавиатуры. Если задан аргумент < флаг> и он отличен от nil, то в строке, вводимой пользователем, допускаются пробелы (признаком конца является нажатие клавиши < Enter>). Если аргумент < флаг> отсутствует или задан равным nil, то признаком конца строки является пробел или нажатие клавиши < Enter>. (getstring [< флаг> ] [< запрос> ]) Типы аргументов: < флаг> — любое значение (рекомендуется использовать только т или nil), < запрос> — текстовая строка. Возвращаемое значение— строка (в случае пустого ввода возвращается строка нулевой длины, т. е. " "). Работа функции getstring не связана с предварительным вызовом функции initget. Пример: (setq str1 (getstring Т " Назови объект (пробелы допускаются): "))
Функция getcname Получает имя команды в локализованной или английской версии AutoCAD. (getcname < имя>) Тип аргумента: строковый, возвращаемое значение — строка или nil. Примеры (для русской версии): (getcname " _LINE") возвращает " ОТРЕЗОК" (getcname " ОТРЕЗОК") возвращает " _LINE"
|