Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METHOD / Основы САПР / AutoLISP2006.doc
Скачиваний:
88
Добавлен:
05.03.2016
Размер:
1.04 Mб
Скачать

6. Использование функции get для ввода данных.

Для ввода данных всех основных типов в языке AutoLisp, существует семейство функций GET (для каждого типа своя функция). Все функции GET могут иметь в качестве аргумента произвольную строковую константу, в которой может содержаться текст запроса или какая-то подсказка (выводимая при запросе пользователю) о необхо-димости ввести какие-то данные. Все функции GET ожидают ответа пользователя, т.е. приостанавливают выполнение программы до тех пор, пока не будет осуществлен ввод (нажата клавиша RETURN). Ввод может быть осуществлен как с клавиатуры, так и при помощи устройства указания. Вводя точки с экрана, вы можете захотеть, чтобы в процессе перемещения курсора по экрану Автокад показывал "резиновую" линию. Это позволяют делать практически все функции семейства GET. Все вводимые данные автоматически преобразуются в требуемый тип данных. В ответ на запрос функций семейства GET нельзя вводить выражение AutoLISP: это приведет к ошибке и выводу сообщения "Can't reenier AutoLISP" ("Не могу войти в AutoLISP повторно"). В макроопределениях меню функции GET нужно выделять обратной косой чертой с тем, чтобы п. AutoCAD обеспечил паузы для ввода данных. Рассмотрим основные из этих функций.

(getangle точка "текст запроса-подсказки")

Возвращает угол в радианах между задаваемым пользователем вектором и положи-тельным направлением оси Х в текущей плоскости построений. Функция всегда возвращает угол в радианах вне зависимости от текущей установки переменных. Начальная точка вектора может быть определена первым аргументом функции - точка. Вторую точку вектора можно указать на экране "мышью", при этом Автокад нарисует "резиновую" линию от точки, указанной первым аргументом, до текущего положения курсора. Если первый аргумент опушен. Автокад потребует ввода двух точек.

Разрешается указывать и трех-мерные точки (см. также GETORIENT).

Например: (setq et1 (getangle "\nEnter point please "))

Данная функция инициализирует запрос: “Enter point please ” предлагающий указать первую точку, далее “Second point” - вторую точку. Следует отметить, что в тексте запроса “\n”, является необязательной управляющей последовательностью, инициализи-рующей его вывод на экран с новой строки.

Переменной et1 будет присвоено значение угла наклона (в радианах), образованного с положительным направлением оси X, ВЕКТОРА проведенного из первой точки во вторую. Если необходимо определить угол наклона отрезка (вектора) проведенного из точки определенной ранее, то:

(setq et0 (list 100 200)) - определение точки заданием координат

(setq et1 (getangle et0 "\Enter point please")).

В этом случае инициализируется только один запрос: "Enter point please", предлагающий указать вторую точку, а от точки et0 тянется “ резиновая нить”.

Для функций GETDIST, GETPOINT и GETORIENT факультативный аргумент точка, имеет аналогичные свойства.

(getdist точка "текст запроса-подсказки")

При любых текущих единицах измерения (например, футах), эта функция всегда возвращает действительное число определяющее расстояние между двумя точками. При инициализации, функция тестирует значения системной переменной FLATLAND и флага трехмерных точек функции INITGET. Как видим из ниже приведенной таблицы, если системная переменная FLATLAND установлена в 1, а флаг "трехмерные точки" функции INITGET не установлен, то GETDIST будет обрабатывать задаваемую трехмерную точку как двухмер-ную, проецируя ее на текущую координатную плоскость.

FLATLAND

INITCET

Возвращается расстояния между трехмерными точками

0

1

Да

0

0

Да

1

1

Да

1

0

Нет

(getpoint точка "текст запроса-подсказки")

Позволяет определить точку. Если первый аргумент точка присутствует, редактор рисует "резиновую" линию от точки определяемой первым аргументом. Указание трех-мерных точек обрабатывается так же, как и в функции GETDIST.

Например: (setq p1 (getpoint “Enter point”))

Указанием точки, присваиваем переменной p1 значение списка из двух (если включен режим двухмерных объектов) или трех (для режима трехмерных объектов) элемен-тов.

Например: ( 20.35 40.33 0.0) - координаты т. р1 X=20.35 Y=40.33 Z=0.

(getorient точка "текст запроса-подсказки")

То же, что и GETANGLE, однако измерение угла осуществляется относительно текущего направления измерения углов (устанавливается системной переменной), а не относительно положительного направления оси Х.

(getcorner точка "текст запроса-подсказки")

Эта функция, как и GETPOINT, возвращает координаты указанной пользователем точки. Отличие от GETPOINT заключается в том, что функция GETCORNER строит "резиновую" рамку при передвижении курсора по экрану, первый угол которой определен первым аргументом функции - точка. В этой функции первый аргумент точка - обязателен. Если вводится трехмерная точка, то координата Z игнорируется (см. функции GETPOINT и GETDIST).

(getint "текст запроса-подсказки")

Ввод целого числа. Ввод может быть осуществлен только с клавиатуры (или через планшет).

(getreal "текст запроса-подсказки")

Позволяет вводить действительное число. Ввод может быть осуществлен только с клавиатуры (или через планшет).

(getstring флаг пробела "текст запроса-подсказки")

Запрашивает ввод текстовой константы. Если флаг пробела указан не равным нулю, то строковая константа может содержать пробелы и завершением ввода считается нажатие клавиши RETURN. В противном случае строка не может содержать пробелы и клавиша ПРОБЕЛ работает как терминатор ввода.

Например: (setq ss_p (getstring “\nEnter string var ”)) - переменной ss_p можно присвоить значение “SAPR”, но для ввода значения “SAPR TM is very good” необходимо указать флаг пробела 1. (setq ss_p (getstring 1 “Enter string var”))

(getenv имя переменной)

Возвращает строковое значение, присвоенное переменной среды DOS. Здесь имя переменной - строковая константа, представляющая собой имя перемен-ной среды. Если эта переменная не определена, возвращается nil.

(getvar имя переменной)

Возвращает значение системной переменной п. AutoCAD. Имя переменной должно быть заключено в кавычки (см. также функцию SETVAR)

Например:(setq ac_d (getvar “ACADVER”)) - переменной ac_d , будет присвоено значение строковой константы “15.06” - номер версии п. AutoCAD.

(setvar имя переменной значение)

Данная функция присваивает значение системной переменной AutoCAD. Имя переменной должно быть заключено в кавычки.

Например: (setvar “FILLETRAD” 0.5) - устанавливает радиус сопряжения для команды FILLET равным 0.5.

(getkword "текст запроса-подсказки")

Запрашивает у пользователя ключевое слово, определенное ранее при помощи функции INITGET. Если ответ не совпадает ни с одним определенным ключевым словом, п. AutoCAD попросит повторить ввод. Если ответ совпадает с ключевым словом, функция GETKWORD возвращает это ключевое слово как строковую константу. Пустой ввод, если разрешен, возвращает nil.

Как видим, функции семейства GET имеют много общего. Но кроме сходства их объединяет еще то что все режимы ввода устанавливаются одной и той же функцией INITGET:

(initget биты строка)

Данная функция устанавливает различные режимы, в которых работают все функции семейства GET, кроме функций GETSTRING и GЕTVAR. Возвращается всегда nil. Биты - необязательное целое число, биты которого интерпретируются следующим образом:

INITGET

1

Запрещение “пустого ввода” (пробела)

2

Запрещение ввода нуля

4

Запрещение ввода отрицательных чисел

8

Не контролируются лимиты, даже если включен LSMCHECK

16

Функции возвращают не двухмерные, а трехмерные точки

32

"Резиновая" линия и рамка рисуются пунктиром

64

Игнорируется координата Z трехмерной точки

128

Возвращает произвольный ввод с клавиатуры

Биты задаются целыми значениями, являющимися степенями двойки, как показано в таблице, и общее целое число формируется путем сложения желаемых целых чисел. (Получается логическое "И" битов.) Следует избегать установки недокументированных битов, поскольку последующие версии п. AutoCAD могут их использовать. Аргумент - строка, используется для задания списка ключевых слов при вводе.

Например: (initget 7) (getint “Enter integer value”)

20 + 21 +22 =7 - при вызове функции getint запрещены “пустой ввод”, нуля и отрицатель-ных чисел.

(initget 1 “sapr machine tools”)

(setq ww (getkword “Enter word”)) - требуется ввод одного из ключевых слов: sapr, machine, tools (без кавычек). Пустой ввод запрещен - установлен бит 1.

Если ввести с клавиатуры одно из ключевых слов, например sapr, то переменной ww будет присвоено значение строковой константы “sapr”.

Управляющие биты и ключевые слова, устанавливаемые функцией initgrt, действуют только относительно следующей за initget функцией getxxxx.

Соседние файлы в папке Основы САПР