- •Утверждено
- •Программирование на языке AutoLisp
- •1. Переменные языка AutoLisp
- •1.1 Системные переменные пакета AutoCad
- •1.2 Переменные языка AutoLisp определенные пользователем
- •2. Типы данных языка AutoLisp
- •3. Функции присвоения
- •4.2 Работа со строками, функции преобразования, проверки типов данных.
- •4.3 Логические функции Автолиспа.
- •5. Работа со списками
- •6. Использование функции get для ввода данных.
- •7. Работа с геометрическими описаниями объектов
- •8. Условное ветвление программ
- •9. Организация циклов
- •10. Вызов команд Автокада из программы на языке AutoLisp
- •11. Управление отображением
- •12. Вывод данных в командную строку
- •13. Файловый ввод - вывод
- •14. Определение функции
- •15. Отладка программы.
- •16. Доступ к примитивам и средствам Автокада
- •Функции AutoLisp Математические функции
- •Логические функции Автолиспа.
- •Работа со списками
- •Использование функции get для ввода данных.
- •Работа с геометрическими описаниями объектов
- •Условное ветвление программ
- •Организация циклов
- •Вызов команд Автокада из программы на языке AutoLisp
- •Управление отображением
- •Вывод данных в командную строку
- •Файловый ввод - вывод
- •Доступ к примитивам и средствам Автокада
- •Insert (block)
- •Vertex (pline)
3. Функции присвоения
Переменные в языке AutoLISP не надо описывать - тип данных определяется автоматически при присвоении переменной значения.
Все переменные - динамические, т.е. присваивая значение символу (группе символов - идентификатору имени переменной), мы автоматически создаем переменную. Перед созданием переменной (а точнее, перед тем. как отвести ей место в памяти) AutoLISP автоматически определяет, какого она будет типа.
Само присвоение переменным значений осуществляется в языке AutoLISP не так как в других языках программирования. Для присвоения переменным значений установлена специальная функция SFTQ. Что такое "SET" - понятно: "положить", а что означает "setq"? Буква "q" в функции присвоения "setq" происходит от сокращения английского слова "quote" - буквально "цитировать". Функция SETQ является мнемоническим сокращением английского словосочетания "SET by Quote" - "присвоить по ссылке".
(setq x 3.2) - переменной x присваивается значение 3.2
(setq z1 “Formula”) - переменной z1 присваивается значение строковой
константы “Formula”.
(setq zx z1) - переменной zx присваивается значение переменной z1
объявленной ранее.
Следует обратить внимание, что выражения языка всегда отделяются друг от друга не менее чем одним ПРОБЕЛОМ.
В языке AutoLisp также есть специальная функция (quote) которая возвращает само выражение фактически не выполняя его. Эта функция имеет сокращенную запись: ‘выражение. Например, если переменные x1 и x2 не определены ранее, то выполнение функции
(setq x12 (+ x1 x2))
вызовет сообщение о ошибке: error: bad argument type . . . . . . . . . .*Cancel*.
Однако функция
(setq x12 ‘(+ x1 x2))
присвоит (копирует) в переменную x12 набор символов (+ x1 x2).
ВНИМАНИЕ! Стандарт языка AutoLisp обязывает заключать все программные функции (в данном случае функция присвоения SETQ) в скобки. Поэтому все выражения языка, все программные файлы должны содержать парное число скобок.
После того как вы присвоили некоторой переменной значение, вы можете в любое время посмотреть ее значение с командной строки п. AutoCAD. Восклицательный знак перед именем переменнойй (например:!X1), введенный с командной строки, сообщает интерпретатору языка что следующий за ним идентификатор X1 является именем переменной AutoLISP.
4. Обзор функций языка AutoLISP
Следующим шагом в освоении языка AutoLISP является ознакомление с набором стандартных (их ещё иногда называют встроенными) функциями. Перечень функций с краткой характеристикой, приведен в Приложении А Дадим их обзор группируя их по функциональному признаку.
4.1 Математические функции
AutoLISP включает в себя достаточно широкий набор встроенных функций, позволяющих производить математические вычисления. Аргументами математических функций являются числа, которые могут быть как целыми, так и вещественными. Если все аргументы - целые числа, то результат операции также будет целым числом. Если хотя бы один аргумент вещественное число, то результат будет вещественным числом. Следует отметить, что число 2.0 например, считается вещественным, поскольку к нем присутствует десятичная точка. К математическим функциям относятся:
(+ число1 число2 . . . )
Возвращает СУММУ всех аргументов число1 число2 . . . (аргументы записываются через пробел).
(- число1 число2 . . . )
Вычитает число2 из числа1 и возвращает разность. Если задано более ДВУХ аргументов, то из первого аргумента вычитается сумма всех остальных. Если задан один аргумент, то он вычитается из нуля (инвертируется его знак).
(* число1 число2 . . .)
Возвращает произведение всех чисел.
(/ число1 число2 . . .)
Делит число1 на число2 и возвращает частное. Если задано более двух аргументов, то первое число делится на произведение всех остальных.
Следует учитывать одну особенность.
(setq a1 (/ 20 3)) - переменной a1 будет присвоено значение целого числа 6 т.к. 20 и 3 - целые числа.
(setq a1 (/ 20 3.0)) - переменной a1 будет присвоено значение действительного числа 6.6667 т.к. 3.0 - действительное число.
(atan число1 [число2])
Если не задано число2, то возвращает арктангенс переменной числа1 в радианах, область допустимых значений -{ pi, -pi} Если заданы оба числа, то возвращается арктангенс переменной число1/число2 в радианах. Если число2 - нуль то в зависимости от знака переменной число1 + или -1.5707 радиан.
(abs число)
Вычисление абсолютного значения действительного или целого числа.
(cos число)
Возвращает значение косинуса угла, заданного числом в радианах.
(ехр число)
Вычисляет значение экcпотенциальной функции с основанием е и аргументом равным числу.
(gcd число1 число2 . . .)
Возвращает наибольший общий делитель (Greatest Common Denominator) указанных аргументов - числа1 и числа2.
(log число)
Возвращает натуральный логарифм числа.
(max число1 число2 . . .)
Возвращает наибольшее из чисел.
(min число1 число2 . . .)
Возвращает наименьшее из чисел.
(rеm число l числом 2)
Возвращает остаток от деления переменной число 1 на переменную число2.
(sin число)
Возвращает значение синуса угла, заданного числом в радианах.
(sqrt число)
Извлекает квадратный корень из числа. Возвращаемый результат всегда вещественный.