<Назад

Далее

3. ОСНОВЫ ГРАФИЧЕСКОГО ЯЗЫКА АВТОЛИСП .Часть 1.

 


План.

  1. Программирование в системе Автокад………………………………..
  2. Основные понятия языка Автолисп…………………………………….
  3. Назначение и возможности языка Автолисп……………..
  4. Запись правил языка Автолисп ………………………………..
  5. Типы данных Автолиспа…………………………………………..
  6. Данные и переменные……………………………………………..
  7. Программы и функции Автолиспа …………………………..
  8. Базовые функции Автолиспа………………………………………………
  9. Функции присвоение значений переменным…………….
  10. Функции обслуживания системных переменных и среды Автокада……………………………………………………….
  11. Функции ввода данных…………………………………………….

3.1. Программирование в системе Автокад

Система Автокад поддерживает несколько языков программирования – от простого языка сценариев до языка высокого уровня С + +.

Сценарий - это текстовый файл, который содержит перечень команд Автокада с параметрами, необходимых для формирования на экране дисплея изображения графического объекта.

Обработка объектов Автокада может производиться с помощью нового интерфейса ActiveX Automation (ранее известного как OLE Automation). ActiveX Automation предоставляет средства для разработки сценариев, макросов, приложений с использованием сред программирования, таких как Visual Basic 4.0. Используя ActiveX, можно создавать и обрабатывать объекты Автокада из любого приложения, которое поддерживает протокол обмена объектами. Таким образом, ActiveX позволяет объединять в одном приложении свойства специфичные для многих других приложений, например, Excel, Microsoft Word, Microsoft PowerPoint и др.

Для редактирования строки статуса и меню Автокада используется язык макросов DIESEL (Direct Interpretively Evaluated String Expression Language). В качестве интерфейса языка С++ в системе Автокад используется расширение Автокада ARX (AutoCAD Runtime Extension).

Основным языком графического программирования системы Автокад является язык Автолисп (AutoLISP). Это вызвано тем, что графические объекты (примитивы, блоки, наборы примитивов и блоков) достаточно просто записываются в виде списков. Автолисп – это язык программирования высокого уровня, который кроме обработки данных различного типа позволяет вызывать команды Автокада, изменять системные переменные Автокада, выполнять процедуры над диалоговыми окнами совместно с языком DCL (Dialog Control Language).

Автолисп является реализацией языка программирования LISP (Лисп) в рамках пакета ADE-3 системы Автокад. Язык Лисп имеет несколько диалектов: MacLISP, InterLISP, ZetaLISP и CommonLISP и предназначен для программирования процедур над списками. Язык Автолисп очень схож по синтаксису и условным обозначениям со стандартным Лиспом, являясь его подмножеством, дополненным рядом функций, которые специфичны для системы Автокад. Семейство Лисп языков основано на вычислении функций, которые записываются в префиксной или в польской нотации, т. е. вначале следует запись операции (функции), а затем указываются элементы, участвующие в операции, или аргументы функции. Язык программирования CommonLISP используется для решения задач искусственного интеллекта [4].

Автолисп дает возможность пользователям и разработчикам прикладных приложений на базе системы Автокад писать макросы и функции, ориентируясь на машинную графику языковых средств высокого уровня. Графический редактор Автокада и интерпретатор Автолиспа представляют собой единую систему: любая функция Автолиспа может быть вызвана из графического редактора, и любая команда редактора может быть использована в программе, написанной на Автолиспе. Практика использования языка Автолисп для расширения системы Автокад, создания прикладных приложений показывает, что он обладает большой гибкостью, прост для изучения и использования.

3.2. Основные понятия языка Автолисп

3.2.1. Назначение и возможности языка Автолисп

Язык Автолисп применяется для решения следующих задач [6]:

1. Программирование чертежей с параметризацией.

2. Создание и использование графических баз данных. Хранение графических данных в виде набора программ на Автолиспе существенно уменьшает объем необходимой памяти на магнитном диске по сравнению с dwg-файлами.

3. Анализ и автоматическое преобразование изображений: обнаружение пересечений линий, трасс; расчет центра масс и моментов инерции; формирование спецификаций по сборочному чертежу; замена вставок; перенос объектов из одного слоя на другой; поворот всех блоков на заданный угол и др.

4. Расширение системы команд графического редактора Автокада.

5. Создание специализированных САПР.

3.2.2. Запись правил языка Автолисп

При записи правил языка Автолисп будем использовать следующие символы, которые не встречаются в выражениях Автолиспа [5, 6]:

символ присвоения := соответствует выражению “это есть”;

угловые скобки <объект>- обозначают, что между ними необходимо поместить объект указанного класса;

квадратные скобки [объект] обозначают, что указанный объект может либо присутствовать, либо отсутствовать в выражении;

многоточие < объект>…- обозначает, что объектов данного класса может быть несколько;

косая черта / (слеш) - обозначает выбор между объектами.

3.2.3. Типы данных Автолиспа

Автолисп поддерживает следующие типы данных: атомы, списки, целые и действительные числа, логические переменные, символы, строковые константы, файловые дескрипторы, точечные пары; указатели функций, встроенные функции, имена примитивов Автокада, команды Автокада, наборы Автокада;. VLA объекты [13].

Элементарные объекты, из которых формируются выражения на языке Автолисп, называются атомами (atom). Атомами являются: константы целые, действительные, текстовые (строковые), а также переменные (символьные имена). Список (list) в Автолиспе – это упорядоченная последовательность, элементами которой являются атомы либо другие списки (подсписки). Список заключается в круглые скобки. Элементы отдельного списка разделяются пробелами. Атомы и списки являются основными типами данных языка Лисп.

Таким образом:

<список>: =( [<элемент>…] ), где <элемент>:=<список>/<атом>.

Например, (a b(c d)e f) – список, состоящий из четырех атомов a b e f и одного подсписка. Как видно из приведенного примера, список является иерархической структурой данных. Список без элементов является пустым списком и обозначается () или атомом NIL. Пустой список аналогичен нулю в арифметике и является одновременно списком и атомом. Список является составным элементом Лисп – программы.

Примеры списков: (A1(B1 C1)); (“A” “B” “C”); ((+ A 10.0) 20.0 NIL).

3.2.4. Данные и переменные

Целые числа (Integers) – это числа, которые не содержат десятичной точки. В последних версиях Автокада целые числа Автолиспа являются 32-битными числами и могут задаваться в пределах от -2147483647 до - +2147483647.

Действительные числа (Real) содержат десятичную точку и хранятся в формате двойной точности с плавающей точкой, что обеспечивает не менее 14 значащих цифр. Числа между –1 и 1 должны начинаться с нуля. В Автолиспе определена встроенная константа- число p , обозначаемая Pi и имеющая значение 3.1415926.

Строковой (текстовой) константой (String) является цепочка символов в кавычках. Длина текстовой константы должна быть не более 132 символов. Символ \ (обратный слеш) используется для ввода управляющих команд: \n – перевод строки; \r – возврат каретки; \t-табуляция. Если обратный слеш \ является символом, он должен быть удвоен (“\\”).

Списковые константы – это списки, состоящие из постоянных элементов любого типа. Типы данных Автолиспа определяются с помощью функции TYPE следующим образом:

Идентификатор Автолиспа

Тип данного

INT

Целые величины

REAL

Действительные числа

STR

Строковые данные

LIST

Списки и функции пользователя

FILE

Дескрипторы файлов

SYM

Символы

PICKSET

Наборы выбора

SUBR

Внутренние функции Автокада

EXSUBR

Внешние функции

ENAME

Имена примитивов Автокада

PAGETB

Страничная таблица функции

В обозначении переменных допускается использовать любые символы, кроме круглых скобок ( ), кавычек “ ”, двоеточия :, апострофа ' и пробела. Первым символом переменной должна быть буква. Атом, не имеющий никакого значения, обозначается как NIL.

Таким образом:

<целая константа> := [+/-] <цифра>…;

<действительная константа> := [+/-]<цифра>….-десятичная точка <цифра>…;

или <действительная константа>:=[+/-]<цифра>E[-]<цифра>…, где Е означает 10 в степени;

<текстовая константа>: = “<символ >…”;

<переменная>: = < буквенный символ> [ символ]….

Примеры записи данных:

0 50 5 -15 – целые константы;

12.2 12.45Е5 –действительные константы;

“ABCD” “AutoCAD” “\n Укажите координаты точки” - текстовые константы;

A1 P3 POINT – переменные;

NIL – пусто.

Примеры неправильной записи данных:

-25000000000 - целая константа за пределами допустимых значений;

.55 - действительная константа без целой части;

"AB\CD" - управляющий символ "\С" не определен, символ \ должен повторяться дважды;

"Auto - отсутствуют закрывающие кавычки.

3.2.5. Программы и функции Автолиспа

Программа на Автолиспе – это последовательность функции Автолиспа и пользовательских функций, определенных программистом. В свою очередь, каждая функция Автокада является атомом списка. Текст программы на Автолиспе набирается в коде ASCII с помощью любого текстового редактора DOS. Комментарии в программах отмечаются символом; (точка с запятой).

Лисп-программа загружается в среду графического редактора функцией LOAD. Функция (LOAD <имя файла> [<элемент>]) загружает файл с именем, указанным в аргументе <имя файла> и возвращает имя последней функции пользователя, описанной функцией DEFUN. Если Лисп-файл не найден или содержит синтаксические ошибки, возвращается значение аргумента [<элемент>], а при его отсутствии выдается сообщение об ошибке ввода. Лисп-программа загружается в среду Автокада из командной строки графического редактора.

 


В языке Автолисп предусмотрено большое число различных операций, которые выполняются встроенными функциями. По функциональному назначению их можно разбить на следующие группы: для работы с числовыми данными; для проверки выполнения различных условий; для обработки символьных данных; для ввода и вывода данных на экран или принтер; ввода геометрических данных с различных устройств; для записи и чтения текстовых данных из файлов; для геометрических построений; для выделения примитивов и формирования наборов примитивов чертежа; для изменения характеристик примитивов и системных переменных; для включения в программу любой команды Автокада.

Функция синтаксически является списком, т.е. <функция>: = (<имя функции> [<аргумент>…]). Ниже приведены примеры записей функций:

(+ 20 5) – функция сложения;

(SIN(+ A B C) – функция вычисления синуса угла, где (+ A В C)- аргумент функции SIN;

(INPUTDATA) – функция пользователя.

Центральное место интерпретатора Автолиспа занимает вычислитель. Вычислитель оценивает (вычисляет) строку ввода пользователя и возвращает соответствующий результат. Процесс вычисления происходит следующим образом: целые и действительные числа, строки, указатели файлов и встроенные функции являются значениями; списки оцениваются согласно первому элементу списка. Если элементом является список (или NIL), то список считается определением функции, а значения остальных элементов списка используются как аргументы функции. Если первый элемент - имя встроенной функции, то оставшиеся элементы списка передаются в эту функцию как формальные аргументы. После вычисления выражения, введенного в командной строке, появляется вновь подсказка (запрос) системы Автокад - Command:

3.3. Базовые функции Автолиспа

Базовые функции Автолиспа объединены и описаны в соответствии с их функциональным назначением [5-7, 10, 13]. В приведенных примерах символ ® заменяет слово “возвращает”.

3.3.1 Функции присвоения значений переменным

Функция (QUOTE <выражение>) или (‘<выражение>) возвращает аргумент <выражение>, не вычисляя его. Замену QUOTE на символ ‘ можно использовать только в текстах Лисп-программ.

Например :

(QUOTE “AUTOCAD”) ® “AUTOCAD”;

(QUOTE CAT) ® CAT;

(SETQ LIST ‘(A B D)) ® (A B D);

Функция (SETQ <переменная> <выражение> [<переменная> <выражение>]…) присваивает значение аргумента <выражение> аргументу <переменная> и возвращает значение последнего выражения.

Например:

(SETQ A 10)- присваивает 10 переменной A и возвращает целое число 10;

(SETQ B (+ 1 3 5))- результат сложения 9 присваивается переменной B;

(SETQ A 2.0 B 5.5)- присваивает переменной А действительное число 2.0, а переменной B-5.5 и возвращает число 5.5.

Значение переменной можно вызвать с целью поверки командой Автокада !<имя переменной>. Например, если выполнена функция (SETQ A 100 B 50), тогда !A возвращает число 100, а !B – 50.

Функция (SET <переменная> <выражение>) вычисляет значение аргумента <выражение>, записывает вычисленное значение в аргумент <переменная> и возвращает его. Имя переменной устанавливается функцией QUOTE.

Например:

(SET 'A 5.0) ® 5.0;

(SET (QUOTE B) A) присваивает значение переменной A переменной B.

3.3.2. Функции обслуживания системных переменных

и среды Автокада

Среда графического редактора Автокада определяется системными переменными, значения которых при вызове ACAD устанавливаются по умолчанию. В ходе графического диалога эти значения можно переустанавливать командой SETVAR. Для программного изменения значений системных переменных используются функции GETENV, GETVAR и SETVAR.

Функция (GETENV <имя системной переменной>) возвращает строковое значение, присвоенное системной переменной, если вызываемая переменная не существует, возвращается NIL.

Например :

(GETENV "ACAD") ® "C:\\PROGRAM FILES\\AUTOCAD R14\\support; C:\\PROGRAM FILES\\AUTOCAD R14\\fonts; C:\\PROGRAM FILES\\AUTOCAD R14\\help; C:\\PROGRAM FILES\\AUTOCAD R14\\bonus\\cadtools";

(GETENV "NOSUCH") ® NIL, так как такой системной переменной не существует.

Функция (GETVAR <имя системной переменной>) возвращает значение системной переменной, если указанной системной переменной нет, возвращается NIL. Аргумент <имя переменной> является строковой константой.

Функция (SETVAR <имя системной переменной> <выражение>) вычисляет значение аргумента <выражение>, записывает в аргумент <имя системной переменной> и возвращает его.

Например:

(SETQ ANG (GETVAR "ANGBASE")) записывается в переменную АNG значение системной переменной ANGBASE, которая задает направление нулевого угла;

(SETVAR "FILLETRAD" 5.0) ® 5.0 и устанавливает значение переменной FILLETRAD равным 5.0;

(SETVAR "CMDECHO" 0) ® 0 и задается значение 0 для переменной CMDECHO, что приведет к отмене "эха" выполняемых команд.

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

Для ввода значений переменных используются функции типа GETXXX: GETINT – целого числа; GETREAL – действительного числа; GETSTRING – символьной переменной; GETPOINT – координат точки; GETCORNER - координат точки противоположного угла прямоугольника; GETDIST – расстояния между двумя точками; GETANGLE или GETORIENT -значения угла; GETKWORD – ключевого слова или его сокращения.

Синтаксис команд GETINT, GETREAL, GETSTRING (<имя функции> [<подсказка>])

Например:

(SETQ d (GETREAL “\n Введите диаметр d =”)) - переменной d присваивается значение, введенное с клавиатуры;

(SETQ N (GETINT “\n Введите число циклов =”)) - переменной N присваивается целое число, введенное с клавиатуры;

(SETQ FileName (GETSTRING “\n Введите имя файла >:”)) - переменной FileName присваивается имя файла (строка символов), введенное с клавиатуры.

Синтаксис команд GETPOINT, GETDIST, GETANGLE, GETORIENT (<имя функции [<точка>] [<подсказка>])

Например:

(SETQ P0(GETPOINT “\n Введите координаты точки P0 >:”))

(SETQ PС(GETPOINT P0“\n Введите координаты точки PC >:”)) - переменной P0 присваиваются введенные координаты точки, затем переменной PC присваиваются введенные координаты относительно координат точки P0;

(SETQ L0(GETDIST “\n Введите длину L0 >:”)) -переменной L0 присваивается длина отрезка между двумя введенными точками или значение действительного числа, введенного с клавиатуры;

(SETQ L0(GETDIST P0 “\n Введите длину L0 >:”)) - переменной L0 присваивается длина отрезка между точкой P0 и введенной точкой;

(SETQ ANGL(GETANGLE “\n Введите угол >:”)) - переменной ANGL присваивается значение угла в радианах. Угол задается между линией, проходящей через две введенных точки и базовой линией или значением действительного числа в градусах, введенного с клавиатуры;

(SETQ ANGL(GETANGLE P0“\n Введите угол >:”)) - переменной ANGL присваивается угол в радианах между линией, проходящей через точку P0 и введенную точку и базовой линией или значение действительного числа в градусах, введенного с клавиатуры.

(SETQ ANGL(GETORIENT “\n Введите угол >:”)) - переменной ANGL присваивается угол в радианах между линией, проходящей через две введенных точки, и базовой линией или значение действительного числа в градусах, введенного с клавиатуры;

(SETQ ANGL(GETORIENT P0 “\n Введите угол >:”)) - переменной ANGL присваивается угол в радианах между линией, проходящей через точку P0 и введенную точку, и базовой линией или значение действительного числа в градусах, введенного с клавиатуры.

Координаты точки можно ввести с клавиатуры или указать курсором с помощью “мыши”. Если в функциях GETPOINT, GETDIST, GETANGLE, GETORIENT указан аргумент < точка >, то на экране будет отображена резиновая линия от указанной точки до текущего положения курсора.

Функции GETANGLE и GETORIENT возвращают угол в радианах между базовой осью X и вектором, заданным координатами двух точек. Угол измеряется против движения часовой стрелки. Для функции GETANGLE нулевой угол всегда направлен вправо: на “восток” или на “3 часа”. Для функции GETORIENT нулевой угол устанавливается переменной ANGBASE, значение которой может быть любым. Например, если значение переменной ANGBASE =1.5708 (90 градусов, направление на север) и ANGDIR = 1 (положительный отсчет по часовой стрелке), то значения, возвращаемые функциями GETANGLE и GETORIENT, будут следующими (табл.1).

Таблица 1

Функции GETANGLE и GETORIENT при различных значениях переменных ANGBASE и ANGDIR

Угол

ANGBASE= 0.0, ANGDIR=0

ANGBASE=1.5708, ANGDIR=1

GETANGLE (радианы)

GETORIENT (радианы)

GETANGLE (радианы)

GETORIENT (радианы)

0

0.0

0.0

0.0

1.5708

90

1.5708

1.5708

4.71239

0.0

180

3.14159

3.14159

3.14159

4.71239

270

4.71239

4.71239

1.5708

3.14159

359

6.26573

6.26573

0.0174533

1.58825

-90

4.71239

4.71239

1.5708

3.14159

-180

3.14159

3.14159

3.14159

4.71239

-270

1.5708

1.5708

4.71239

0.0

-360

0.0

0.0

0.0

1.5708

Функция GETANGLE учитывает значение только переменной ANGDIR и может использоваться для угла поворота при вставке блока, так как ввод угла, равного нулю, всегда возвращает ноль радиан. Функция GETORIENT учитывает значения обеих переменных. Ее удобно использовать для указания углов базовых линий текстовых объектов.

Ввод расстояния между двумя точками функцией GETDIST выполняется следующими способами: вводом числа с клавиатуры; вводом координат двух точек; вводом координат второй точки, если указан аргумент функции <точка>. Функция GETDIST возвращает расстояние в виде действительного числа. При задании расстояния координатами точек графический редактор переходит в режим резиновой линии.

Функция GETKWORD ожидает ввода ключевого слова или его аббревиатуру. Ключевые слова должны быть определены заранее функцией INITGET. Все функции ввода, кроме GETSTRING, могут принимать значения ключевых слов дополнительно к основным своим значениям при условии определения ключевых слов функцией INITGET.

Функция (INITGET [код] [строка]) устанавливает ключевые слова для последующего использования в функциях ввода, возвращает NIL.

Следующие функции учитывают ключевые слова GETINT, GETREAL, GETDIST, GETANGLE, GETORIENT, GETPOINT, GETCORNER, GETKWORD, ENTSEL, NENTSEL, NENTSELP.

Аргумент [код] является целым числом, который запрещает или разрешает определенные режимы ввода данных (табл. 2). Аргумент [строка] определяет список ключевых слов. Ключевые слова проверяются последующими функциями ввода. Если ввод данных не соответствует типу и ключевому слову, Автокад запрашивает повторный ввод. Функция INITGET применяется только для следующего за ней вызова функции ввода.

Таблица 2

Зависимость режима ввода от значения аргумента <бит>

функции INITGET

Значение кода

Режим ввода

1 (0-й бит)

Запрещен пустой ввод (т.е. <ENTER> или <ПРОБЕЛ>)

2 (1-й бит)

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

4 (2-й бит)

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

8(3-й бит)

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

16(4-й бит)

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

32 (5-й бит)

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

64 (6-й бит)

Запрещает ввод координаты Z для функции GETDIST

Из табл. 2 видно, что для задания режимов ввода используется двоично-десятичная кодировка. Например, для запрещения ввода нуля и отрицательных чисел значение аргумента [код] равно 2+4=6.

Список ключевых слов, которые может ввести пользователь для функции GETXXX, строится по следующим правилам: каждое ключевое слово может содержать только буквы, числа и символ тире (-); ключевые слова в списке разделяются пробелами; допускается задавать сокращенные варианты слов.

Ключевые слова сокращаются двумя способами:

выделением части слова прописными буквами;

записью сокращения слова прописными буквами, причем первые символы сокращения и ключевого слова должны быть одинаковые. Сокращение записывается после полного варианта слова через запятую.

Например, “autoCAD” “LType ” “AUTOCAD,ACAD” “LTYPE,LT”.

Ключевые слова, разрешенные функцией INITGET, могут вводиться пользователем с клавиатуры в ответ на запрос функции GETXXX. Такое слово будет возвращено функцией GETXXX в виде строки текста. Это позволяет пользователю управлять работой программы в любой ее точке там, где вводятся данные с помощью функции GETXXX.

Например, в ниже приведенном фрагменте программы

(INITGET “autoCAD AUTOCAD,AUTO”)

(GETKWORD “\n Введите ключевое слово >:”)

(INITGET 7)

(SETQ VER (GETINT "\n VER/AUTOCAD >:"))

пользователь может ввести следующие данные с клавиатуры: 1) строки autoCAD, CAD, AUTOCAD, AUTO; 2) положительное целое число, неравное нулю (так как в INITGET записано 7, т.е. 1+2+4, см. табл. 2). Любой другой ввод будет восприниматься как неправильный, и функции GETKWORD, GETINT будут повторно запрашивать ввод данных.

С помощью сочетания функций INITGET, GETKWORD и COND удобно организовывать ветвления в программе, управляемые пользователем.

Функция (GRREAD [трек] [код клавиши [тип курсора]) считывает значения с любого устройства ввода Автокада. Функция GRREAD ожидает ввод и возвращает список (см . табл. 3), состав которого зависит от аргументов функции.

Если аргумент [трек] задан и не NIL, возвращается список, состоящий из кода указывающего устройства ввода (“мыши”) и координат расположения курсора. Если задан аргумент [код клавиши], а аргумент [трек] равен NIL, функция GRREAD выполняет процедуру в зависимости от значения кода (табл.3). Аргумент [тип курсора] используется для управления формой графического курсора. Оба аргумента [код клавиши [тип курсора] являются целыми числами, значения которых помешены в табл. 3 и 4.

Таблица 3

Значения аргумента [код клавиши] функции GRREAD

Код клавиши

Описание выполняемой процедуры функцией GRREAD

1 (0-й бит)

Возвращаются координаты курсора режима динамического слежения (drag mode)

2 (1-й бит)

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

4 (2-й бит)

Используется значение аргумента [тип курсора] для управлением курсором

8 (3й-бит)

Отменяет вывод на дисплей сообщений при вводе прерывания командой CTRL+C

Таблица 4

Значения аргумента [тип курсора] функции GRREAD

Код курсора

Описание выполняемой процедуры функцией GRREAD

0

Устанавливает обычный вид курсора (crosshairs)

1

Курсор не отображается на экране дисплея (no crosshairs)

2

Выводит на экран курсор выбора объекта ("target" cursor)

Для выполнения процедур функции GRREAD с аргументом [тип курсора] необходимо, чтобы аргумент [код клавиши] имел значение бита 2 (4). Аргумент [тип курсора] оказывает свое действие только в течение вызова функции GRREAD (табл.5).

Таблица 5

Элементы списка, возвращаемого функцией GRREAD

Первый элемент списка

Второй элемент списка

Значение

Устройство ввода

Значение

Описание

1

2

3

4

2

Ввод с клавиатуры

Десятичное число

Код символа

3

Выбранная точка

3D точка

Координаты точки

4

Экранное меню

0 - 999

Экранное меню

4

Падающие меню

1001 – 1999

……………

16001 - 6999

Меню POP1

…………….

Меню POP16

5

Мышь

3D точка

Координаты точки

6

Кнопочное меню

0 - 999

1000 – 1999

2000 - 2999

3000 - 3999

Кнопочное меню 1

Кнопочное меню 2

Кнопочное меню 3

Кнопочное меню 4

7

Меню планшета 1

0 - 32767

Поле дигитайзера

8

Меню планшета 2

9

Меню планшета 3

10

Меню планшета 4


Окончание табл.5

1

2

3

4

11

Дополнительное кнопочное меню

0 – 999

1000 – 1999

2000 – 2999

3000 - 3999

Дополнительное меню AUX1

Дополнительное меню AUX2

Дополнительное меню AUX3

Дополнительное меню AUX4

12

Кнопочный указатель

3D точка

Координаты точки

Например:

при нажатии левой клавиши мыши в точке с координатами 100, 100, 0 функция (GRREAD) возвращает (3 (100.0 100.0 0.0)).

Функция (READ [строка]) возвращает первый атом или список из строки. Аргумент [строка] не должен содержать пробелов, если он не является списком. Функция READ преобразует аргумент в соответствующий тип данных. Если аргумент [строка] отсутствует, возвращается NIL.

Например :

(READ "AutoCAD") ® AutoCAD;

(READ " Auto CAD") ® Auto;

(READ "\"Автокад – это САПР\"") ® "Автокад - это САПР";

(READ "50.5") ® 50.5 (действительное число);

(READ "25 30.5") ® 25 (целое число).

Функция (READ-CHAR [дескриптор файла]) возвращает десятичный код символа введенного из буфера клавиатуры или открытого файла. Если аргумент [дескриптор файла] не указан и буфер клавиатуры пуст, READ-CHAR ожидает ввода с клавиатуры.

Например:

Если буфер клавиатуры пуст, функция (READ-CHAR) при вводе символов CAD возвращает целое число 67 – код символа С.

Последующие вызовы функции READ-CHAR возвращают коды последующих символов:

(READ-CHAR) ® 65 код символа A;

(READ-CHAR) ® 68 код символа D;

(READ-CHAR) ® 10 код клавиши ENTER.

Функцию READ-CHAR можно использовать в тех случаях, когда необходимо проверить код нажатой клавиши, не связанный с каким-либо символом.

Например, необходимо проверить, была ли нажата клавиша ENTER (код 10). Проверка осуществляется выражением:

(= (READ-CHAR) 10) при нажатии ENTER возвращается T (истина).

Следует иметь в виду, что операционные системы, в среду которых загружен Автокад, используют разные коды окончания строки в текстовых файлах ASCII.

Функция (READ-LINE [дескриптор файла]) считывает строку символов с клавиатуры или открытого файла. Если READ-LINE встречает конец файла, то возвращает NIL, иначе возвращается введенная строка.

Например:

(READ-LINE) ожидает ввода с клавиатуры, вводим: AutoCAD, функция возвращает "AutoCAD"



Назад Далее