Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГГМ / ЛР ГГМ(заочники).doc
Скачиваний:
68
Добавлен:
03.03.2016
Размер:
1 Mб
Скачать

Лабораторная работа № 4 Программирование в AutoLisp

Цель: получить навыки работы в AutoLISP, научиться программировать на языке LISP, используя встроенные команды AutoCAD.

Контрольные вопросы:

1. Что такое список?

2. Опишите синтаксис функции COMMAND.

3. Какие функции AutoLISP обеспечивают возможность реализации диалога с пользователем?

Задание: написать программу на языке Lisp, моделирующую твердотельную модель заданного объекта (варианты заданий приведены в приложении А).

Название языка официально означает LISt Processing. Основное понятие языка Лисп - список. Список представляет собой перечень атомов или списков, отделенных друг от друга пробелами и заключенных в скобки.  Атом - это простой (в отличие от списка) тип данных: число, символьная строка, функция.

В LISP нет различия между текстом программы и обрабатываемыми данными. По умолчанию любой список является программой, чтобы интерпретатор не пытался выполнить данные, необходимо отключить интерпретацию списка данных оператором QUOTE. Из того, что текст программы - тоже список, вытекает необходимость использования специальной системы его записи - обратной польской нотации (названа так по причине изобретения ее польским математиком Яном Лукасевичем). Вызов любой функции в данной нотации записывается как список следующего вида:

(<имя_функции> a1 a2 a3),   где a1, a2, a3 - аргументы функции

Рассмотрим основные функции AUTOLISP (см. табл. 4.1, 4.2 и 4.3). В LISP угловые значения обычно измеряются в радианах.

Таблица 4.1 - Основные математические функции AUTOLISP

Имя функции

Аргументы

Возвращаемое значение

+

A1 A2 ... An

A1+A2+ ... +An

-

A1 A2 ... An

A1-A2- ... -An

*

A1 A2 ... An

A1*A2* ... *An

/

A1 A2 ... An

A1/A2/ ... /An

1+

A

A+1

1-

A

A-1

ABS

A

SQRT

A

EXP

A

ea

EXPT

A B

ab

GCD

A

НОД чисел A и B

LOG

A

Натуральный логарифм числа А

MIN

A1 A2 ... An

Минимум из чисел A1 A2 ... An

MAX

A1 A2 ... An

Максимум из чисел A1 A2 ... An

REM

A B

Остаток от деления A/B

SIN

A

Синус А

COS

A

Косинус А

ATAN

A

Арктангенс А в радианах

Таблица 4.2 - Функции ввода/вывода

Имя функции

Аргументы

Описание

PRINC

любое выражение

Вывод выражения на экран без учета управляющих кодов

PRIN1

любое выражение 

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

PRINT

любое выражение

Вывод выражения на экран с учетом управляющих кодов, с новой строки и с пробелом в конце

PROMPT

текст

Вывод текста на экран с учетом управляющих кодов

TERPRI

--

Вывод пустой строки

GETINT

текст подсказки

Ввод целого числа

GETREAL

текст подсказки

Ввод вещественного числа

GETSTRING

текст подсказки

Ввод текста

Таблица 4.3 - Управляющие коды

Код

Значение

\e

Символ с кодом 27 (ESC)

\n

Переход на новую строку

\r

Переход в начало той же строки

\t

Переход на следующую позиции табуляции (8 пробелов)

\\

Символ \

\nnn

Ввод символа с восьмеричным кодом nnn

Все GET-функции возвращают введенное с клавиатуры значение или NIL, если имел место пустой ввод. Для сохранения этого значения его следует записать в переменную, например: 

( SETQ ( GETINT "\nВведите X:" ))

Ввод данных всегда чреват возникновением ошибок. Для автоматического исключения наиболее очевидных ошибочных ситуаций предназначена функция INITGET.

( INITGET <сумма_кодов> )

Действие команды INITGET распространяется только на одну функцию.

Основные коды функции INITGET:

  • 1 – запретить пустой ввод;

  • 2 – запретить ввод нуля;

  • 3 – запретить ввод отрицательного числа.

Большинство команд AutoCAD могут быть выполнены из программы на AutoLISP при помощи функции COMMAND:

( COMMAND <имя команды> <список параметров>)

Есть два особых вида выражений, которые могут быть аргументами функции COMMAND:

  • PAUSE позволяет пользователю ввести соответствующий параметр вручную;

  • две кавычки или отсутствие параметров вообще равносильно прерыванию команды.

Внутри функции COMMAND нельзя вызывать функции ввода данных.

Среда программирования AutoLISP может использоваться для:

  • геометрических вычислений;

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

  • организации диалога;

  • исполнения команд;

  • работы с наборами.

Соседние файлы в папке ГГМ