- •Поверхностное моделирование в AutoCad
- •Контрольные вопросы:
- •Лабораторная работа №3 Твердотельное моделирование в AutoCad
- •Контрольные вопросы:
- •Лабораторная работа № 4 Программирование в AutoLisp
- •Контрольные вопросы:
- •Для загрузки и выполнения функции определенной пользователем необходимо определить функцию в формате:
- •При работе в AutoLisp возможно также осуществлять: - доступ к системным переменным. Для этого можно использовать следующую команду:
- •Приложение а варианты заданий
Лабораторная работа № 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 |
любое выражение |
Вывод выражения на экран с учетом управляющих кодов |
|
любое выражение |
Вывод выражения на экран с учетом управляющих кодов, с новой строки и с пробелом в конце |
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 может использоваться для:
геометрических вычислений;
доступа к примитивам, таблицам, системным переменным;
организации диалога;
исполнения команд;
работы с наборами.