- •Программирование на AutoLISP в
- •LISP
- •Извлечение из списков (setq a ‘(5 3 8 4 9))
- •Поиск подсписка
- •Математические функции
- •В AutoCAD входит интерпретатор AutoLISP,
- •Например, для получения суммы трех чисел можно ввести:
- •Если P- точка , то (car P) – x (cadr P) – y
- •Зарезервированные символы AutoLISP:
- •Локальные символы.
- •2. Доступ к примитивам:
- •(entdel e) - удалить или восстановить примитив е;
- •3. Организация диалога.
- •Ввод точек
- •Ввод расстояния
- •Например:
- •Исполнение команд.
- •Манипуляции с набором
- •(setq S (ssget …)) S – переменная набора, для ее использования:
- •Доступ к таблицам
- •Управление экраном
- •(redraw) – перерисовка
- •Геометрические вычисления
- •Преобразование чисел
- •Пример
- •(command “pline” pt1 “w” w “” (list (car pt1) (cadr pt2)) pt2
Программирование на AutoLISP в
AutoCAD.
Основным средством разработки приложений в AutoCAD является язык программирования AutoLISP — вариант языка LISP, в который добавлены функции доступа к объектам и таблицам AutoCAD. Основой языка LISP является работа со списками, которые могут иметь произвольную длину и включать элементы разной природы (числа, текстовые строки и т. д.). В то же время в языке пользователю доступны обычные арифметические вычисления, логические операции, работа с файлами и т. д.
LISP
Присваивание
(setq <символ> <выражение> …..< символ > < выражение >)
Создание списка
(list <элемент> < элемент > …..< элемент >) Список констант
‘(<константа> < константа > …< константа >) Создание точечной пары
(cons <первый элемент > <второй элемент >)
Извлечение из списков (setq a ‘(5 3 8 4 9))
(car a) возвратит 5 (cadr a) возвратит 3 (caddr a) возвратит 8 (nth 3 a) возвратит 4 (nth 4 a) возвратит 9
(cdr a) возвратит (3 8 4 9)
(setq b (cons 1 2)) возвратит (1 . 2) (car b) возвратит 1
(cdr b) возвратит 2
Поиск подсписка
(setq a (list (cons 0 10) (cons 1 20))) (assoc 0 a) возвратит (0 . 10) Подстановка
(subst <что> <вместо чего> <куда>) (subst (cons 1 50) (assoc 1 a) a) возвратит ((0 . 10) (1 . 50))
Математические функции
(+ n1 n2 …) n1+n2+… (- n1 n2 …) n1-n2-… (* n1 n2 …) n1*n2*… (/ n1 n2 …) n1/(n2*…) (max n1 n2 …)
(min n1 n2 …) (1+ n) n+1 (1- n) n-1
(exp x) e в степени x (expt x y) x в степени y
И еще
abs sqrt log sin cos tan atan …..
Управление вычислениями (if <условие> <выражения>)
(if < условие > < выражение 1> < выражение 2>) (progn < выражение 1 > < выражение 2 > …)
(while < условие > … выражения …)
(repeat <число повторений> …выражения…) Условия (возвращают T или nil)
(= a1 a2) (/= a1 a2) (< a1 a2)
(<= a1 a2) (> a1 a2) (>= a1 a2)
Логические операции (and a1 a2)
(or a1 a2) (not a1)
(and (> a b) (= c 6))
В AutoCAD входит интерпретатор AutoLISP,
начинающий работать, если в командной строке в ответ на стандартную подсказку Команда: (Command:) ввести открывающую скобку "(". В этот момент AutoCAD настраивается на приём и вычисление выражения AutoLISP, которое должно иметь форму списка, т. е. начинаться открывающей скобкой и заканчиваться закрывающей скобкой — ")", а элементы списка должны отделяться друг от друга пробелами.
Например, для получения суммы трех чисел можно ввести:
1.Сommand: (+ 223.75 16.002 89.899) 329.651
2. Command: Line first point 5,5
next point (list (* x 2) (* x 5))
3.Command: (setq T1(list 28 (* m n )))
4.Command: Line
fisrt point !T1
next point (list ( - (car T1) S) (+ (cadr T1) m))