Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции ввода данных






Функция initget

Задает ограничения последующего ввода данных.

(initget [< флаг> ] [< строка> ])

Вызов функции initget должен предшествовать в программе обращению к функциям getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, поскольку именно для них устанавливаются ограничения.

В частности, initget может сохранять за пользователем возможность нажатия клавиши < Enter> вместо ввода данных (например, для выбора значения по умолчанию), а может и не сохранять. Отсутствие вызова функции initget перед обращением к функциям getint, getreal и т. п. означает, что в этом обращении нет ограничений на ввод данных.

Аргумент < флаг> функции initget — это битовый флаг, который должен быть целым числом (от 0 до 255), являющимся суммой битов с соответствующими каждому из них весовыми значениями (нумеруются по степеням числа 2). Если бит не установлен, то его значение в битовом флаге считается равным нулю.

Бит Назначение
  Не разрешает пустой ввод (пустой ввод— это нажатие только клавиши < Enter>)
  Не разрешает ввод нуля
  Не разрешает ввод отрицательных чисел
  Разрешает указание точек за пределами лимитов, несмотря на значение сис­темной переменной LIMCHECK
  Данный бит не задействован
  Заставляет AutoCAD использовать штриховую линию вместо сплошной для ре­зиновой нити и резиновой рамки; если значение системной переменной POPUPS равно нулю, то AutoCAD игнорирует данный бит
  Запрещает ввод третьей координаты для точки в функции getdist
  Разрешает произвольный ввод в качестве ключевого слова; преобладает над другими битами и ключевыми словами; в частности, данный бит позволяет игно­рировать значение бита 1

 

 

(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"

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.