- •История и перспективы
- •Принципы построения сапр
- •Подходы к конструированию
- •Организация графических данных
- •Автоматизация разработки и выполнения конструкторской документации в среде AutoCad
- •Формирование чертежей с использованием вариантного метода
- •Графический редактор AutoCad
- •Команды упрвления экраном
- •Команды редактирования
- •Язык Auto lisp Язык Auto lisp был создан в 1962 году Дж. Маккарти.
- •Для представления объектов в языке lisp используются символы.
- •Функции
- •Универсальные функции
- •Управляющие структуры
- •Использование Auto lisp в среде Auto cad
- •Доступ из Auto lisp к командам Auto cad
- •Пространственное полигональное (поверхностное) моделирование
- •Правило правой руки
- •Выбор точки зрения и плана
- •Расширение Auto cad по объемному конструированию
- •Составные твердотельные объекты
- •Функции AutoLisp для создания составных объектов и их редактирования.
- •Изображение твердотельных объектов: виды, разрезы, сечения
- •Организация проектирования изделий с применением сапр
Функции
В LISP используется префиксная форма записи вычислений, при которой как имя функции, так и аргумент записываются внутри скобок. Единообразная и простая структура вызова функции удобна как для программиста, так и для вычисляющего значения выражений интерпритатора LISP. При выполнении значения функции не нужно осуществлять сложный синтаксический анализ выражений, так как уже по первому символу текущего выражения система знает, с какой структурой имеет дело и как ее интерпретировать или как с ней обращается.
Благодаря скобкам тексты на LISP сравнительно легко читаются, что облегчает понимание смысла программ. За правильным соотношением числа скобок в современных версиях LISP следит сама машина.
Используемое в LISP так называемое функциональное программирование основывается на той простой идее, что в результате каждого действия возникает значение. Значение становится аргументами следующих действий и конечный результат всей задачи выдается пользователю.
Программы строятся из логически расчлененных определенных функций. Определения состоят из организующих вычисления управляющих структур и из вложенных, часто вызывающих самих себя вызовов функций. Кроме функционального программирования в LISP можно использовать программирование, основанное на обычном последовательном исполнении операторов с присваиваниями, передачами управления и специальными операторами цикла.
Auto LISP работает в режиме интерпретации. Внутри интерпретатора находится вычислитель, который выполняет следующие действия:
определяет первый элемент, который является именем выполняемой функции;
определяет следующие элементы, которые являются аргументами, необходимыми для выполнения заданной функции;
(+(- 4 1) (*5 2))
В этом случае аргументами функции «сложить» являются выражения, которые в свою очередь необходимо вычислить.
Универсальные функции
QUOTE – блокирует вычисление выражения.
‘< S – выражение> или (QUOTE<S – выражение>).
Пример:
:(+ 2 3)
5
:(SETQx’(+2 3))
(+ 2 3)
EVAL – вычисляет любое правильно составленное выражение LISP. Он нужен для снятия эффекта блокировки вычисления:
(EVAL<S – выражение>).
Пример: (EVAL(QUOTE(+2 3)))
5
: (SETQa’(+ 2 3))
(+ 2 3)
: (EVALa)
5
Псевдофункции
Псевдофункции – это функции, которые образуют связь между символом и его значением.
К псевдофункциям относятся:
SETQ – связывает имя со значением выражения.
(SETQ<символ 1> <S – выражение>).
Пример: (SETQ b 123 S 4.4).
: (SETQ max (+ b a).
SET – вычисляет имя и связывает его со значением выражения.
: (SET e (+ b c))
: 127.7
(SETQ x ‘(a b)) эквивалентна (SET’x ‘(a b)).
Вычислительные функции
Сложение (+ <число> < число>).
: (+ 2 3)
: 5
Вычитание (- <число> …)
: (-5 1 2)
2.
Умножение (*< число> < число>).
Деление (/ <число> <число>).
Абсолютная величина угла (ABS <число>).
Прибавление 1 (1+ <число>).
Вычитание 1 (1- <число>).
Синус угла (SIN <число>); угол в радианах.
Квадратный корень числа (SQRT <число>).
Арктангенс (ATAN <число>).
Косинус (COS <число>).
Экспонента (EXP <число>).
Возведение числа в степень (EXPT <число - основание> <число - степень>).
Максимальное из чисел (MAX <число> <число>).
Минимальное из чисел (MIN <число> <число>).
Остаток от деления (REM <число> <число>).
Наибольший общий делитель (GCD <число> <число>).
Базовые функции разбора и анализа списков
Базовые функции разбора и анализа списков образуют в определенном смысле систему аксиом языка – алгебру обработки списков. Их можно разбить на функции разбора CAR, CDR, функции создания CONS и функции проверки ATOM, EQ. Базовые функции проверки называют базовыми предикатами. Предикаты – это функции, которые проверяют некоторые условия.
CAR – возвращает первый элемент списка.
(CAR <список>).
Пример:
: (CAR’ (a (a1 a2)))
a
: (CAR’ (( a1 a2) a))
(a1 a2).
CDR – возвращает хвост списка. Результатом является всегда список.
(CDR<список>).
Пример:
: СDR’ (a (a1 a2))
(a1 a2)
: CDR’ ((a1 a2) a)
(a).
CONS – конструктор списков. CONS возвращает список, который получается из списка, заданного вторым аргументом, добавлением в его начало элемента, заданного первым аргументом.
(CONS <новый первый элемент> <список>)
Пример:
: (CONS’ a’ (b c d))
(a b c d)
: (CONS’ (a e)’ (b c d))
((a e) b c d).
CONS может воспринимать атом на месте аргумента <список>, конструирую структуру, которая называется «точечная пара». Показывая точечную пару на экране, Auto LISP выводит точку между первым и вторым элементами списка. Точечная пара занимает меньше памяти, чем обычный список, и позволяет использовать функцию CDR для извлечения второго атома.
:(CONS’ a’ b)
B)
: (CAR(CONS’ a’ b))
A
: CDR (CONS’ a’ b))
B.
EQ – физическое равенство. EQ проверяет тождественность двух S – выражений.
Пример:
: (SETQ f1’ (a b c))
: (SETQ f2’ (a b d))
: (SETQ f3 f2)
: (EQ f1 f3)
NIL
: (EQ f1 f2)
NIL
: (EQ f3 f2)
T.
Встроенный функции обработки списков
В LISP включено множество встроенных функций для различных действий и ситуаций. Такие функции называют базовыми примитивами обработки списков – встроенными функциями обработки списков. К ним относятся:
LAST – выделяет последний элемент списка:
: (LAST’ (a a1 a2))
a2
: (LAST’ (a(a1 a2)))
(a1 a2).
LIST – создает список из элементов.
: (LIST’ a’ b)
(a b)
: (LIST’ (+ 2 3) 2)
((+2 3)2)
: (LIST (+2 3)2)
(5 2).
APPEND – объединяет несколько списков.
: (SETQ a’ (a1 a2)
b’ (b1 b2)
‘
: (APPEND a b)
(a1 a2 b1 b2).
SUBST – заменяет элемент в списке.
: (SETQ ex’ (a b (c d)b))
: (SUBST’ gg’ b ex)
(a gg (cd) gg).
MEMBER выделяет часть списка. MEMBER определяет список, начиная с заданного выражения.
: MEMBER’ c’ (a b c d e))
(c d e).
NTH – выделят n-й элемент списка:
: (NTH O’ (a b c d e))
A
: (NTH 3’ (a b c d e))
D.
