- •Основы сапр
- •Лекция 1 Пути повышения качества и производительности проектирования на основе использования эвм
- •Правила оформления блок – схем алгоритмов
- •Лекция 2 сапр как объект проектирования
- •Состав и структура сапр
- •Лекция 4
- •3D – моделирование в машиностроении
- •AutoCad – единая платформа для проектирования
- •Как сейчас устроен AutoCad?
- •Как сегодня работают в среде AutoCad?
- •Инженерная графика
- •Трехмерное моделирование
- •Визуализация проектных решений
- •Лекция 6 Трехмерные построения
- •Координаты в трехмерном пространстве
- •Уровень и высота
- •Системы координат
- •Настройка вида
- •Трехмерные полилинии
- •Лекция 8 Тонирование
- •Лекция 9 Области
- •Лекция 10 Разрезы и сечения
- •Редактирование тел
- •Лекция 12 Создание приложений для программных пакетов
- •Visual lisp
- •Переменные языка AutoLisp
- •Переменные языка AutoLisp определенные пользователем
- •Лекция 13 Типы данных языка AutoLisp
- •Обзор функций языка AutoLisp
- •Математические функции
- •Лекция 14 Использование функции get для ввода данных.
- •Условное ветвление программ
- •Организация циклов
- •Вызов команд Автокада из программы на языке AutoLisp
- •Лекция 15 Вывод данных в командную строку
- •Файловый ввод - вывод
- •Определение функции
- •Лекция 16 Доступ к примитивам и средствам Автокада
- •Лекция 17 Требования, предъявляемые к техническому обеспечению
- •Режимы работы технических средств сапр
Переменные языка AutoLisp
Язык AutoLISP, как и любой язык программирования, использует переменные. Переменная - это объект, имеющий уникальное имя и способный хранить в себе некоторое значение. Переменные языка AutoLISP динамические - создание переменной и определение её типа осуществляется в момент присвоения переменной значения в программе.
Переменные языка AutoLisp определенные пользователем
Переменные языка AutoLISP совершенно независимы от системных переменных п. AutoCAD и могут повторять их имена. При каждом обращении к переменной, AutoLISP использует то значение переменной, которое было установлено последним. Имя переменной может состоять из любых печатных символов (в т.ч. и цифр), однако не должно включать в себя зарезервированные Автолиспом символы, поскольку они интерпретируются специальным образом. Не рекомендуется использовать для имен переменных следующие символы:
Зарезервированные символы: . ' " ; ( ) или пробел
Знаки операций AutoLISP: - * = > < + - /
"Плохие" символы: ? ' ! \ " , а также управляющие символы
Нельзя также использовать в качестве имен переменных имена функций языка AutoLISP. Заметим, что AutoLISP не различает малые и большие буквы. Поскольку имя переменной длиной более шести символов требует для хранения больше памяти, рекомендуется не превышать этот предел. Не следует также начинать имя переменной с цифры.
Имена переменных | |||
Неверные |
Ошибка |
верные | |
123 |
|
РТ123 | |
10.5 |
действительная константа |
tx10_5 | |
ANGLK |
конфликтует с функцией ANGLE Автолиспа |
ANGL | |
A(l) |
содержит запрещенные символы |
А_1 | |
OLD SUM |
содержит пробел |
OLD_SUM |
Лекция 13 Типы данных языка AutoLisp
С понятием переменной в программировании тесно связано понятие типа переменной. Типом переменной определяются операции, которые можно производить над переменными. Например, для чисел действительного типа определены операции сложения, умножения и деления, в то время как для строк определены другие операции - конкатенация, извлечение подстроки и пр. (можно одно число поделить на другое, но нельзя поделить строку на другую строку).
Как и любой другой язык программирования, AutoLISP при работе с переменной должен знать, к какому типу данных она относится. Однако, как мы убедимся позднее, в данном случае, работа с типами переменных очень проста. Перечислим сначала основные типы данных, которые есть в любом языке программирования, в том числе и в языке AtoLISP:
• строковые переменные
• целые переменные
• действительные переменные
Строковые переменные могут содержать в себе различные текстовые константы) т.е. совокупности букв (и символов), заключенных в кавычки, например "Введите число 12.80:". Кавычки говорят, что данную совокупность символов следует рассматривать как текстовую константу. Если системная переменная является строковой, то это значит, что в ней может храниться только строковая константа (строковая константа может конечно, с общепринятой точки зрения являться числом, например "56.88", однако AutoLISP не понимает что это число, и работает с такой константой)
Целые переменные - это положительные или отрицательные целые числа (без дробей и десятичной точки). Для определения того, включен какой-то режим или нет, Автокад часто использует значения 0 и 1, например если режим ORTHO (ОРТО) включен, то системная переменная ORTHOMODE установлена в единицу. Заметим, что целые числа представляются в памяти машины двумя байтами и не поэтому могут выходить за диапазон (-32 768, 32 767).
Действительные переменные - это положительные или отрицательные числа с десятичной точкой. В отличие от многих других языков программирования язык AutoLISP не разрешает начинать или заканчивать число десятичной точкой. Это связано с существованием специфического типа данных - точечной пары, разделителем которой является точка. Поэтому, если значение меньше единицы, вы должны явно указать 0 перед десятичной точкой (0.123), иначе AutoLISP воспримет ошибку (error: invalid dotted pair - ошибка: неверная точечная пара)). В качестве примеров действительных системных переменных можно указать переменные FILLETRAD, LTSCALE и AREA. Диапазон представления действительных чисел зависит от типа вашего компьютера и в любом случае достаточно велик. Правильно записанными действительными числами являются числа 2.12, 3.11592 -9722.12 и 1.23544Е+17.
Кроме этих простейших типов в языке AutoLISP определены более сложные типы данных. Перечислим их без подробного рассмотрения.
Дескрипторы файлов - переменные, в которых хранится описание открытого файла: аналогичны дескрипторам файлов в других языках программирования.
Имена примитивов текущего чертежа п. AutoCAD - переменные, в которых хранится уникальный индекс, взаимно однозначно соответствующий примитивам текущего чертежа.
AutoCAD, как и любая система САПР, работает не с растровым представлением изображения, а с его геометрическим описанием. Каждый примитив, создаваемый в чертеже п. AutoCAD, заносится в графическую базу данных (ГБД), в которой хранится вся информация о примитивах чертежа (как геометрическая, так и специальная, характерная для Автокада). Каждому примитиву присваивается имя (индекс), по которому можно получить всю информацию о примитиве. Имя примитива - это просто уникальное восьмизначное шестнадцатеричное число (например, "6000001А"). Однако для того чтобы обратиться к графической базе данных, нужно работать пе с числом, а именно с типом данных "имя примитива", иначе доступ к ГБД будет невозможен. Этот тип данных введен в язык AutoLISP для связи с графическим редактором п. AutoCAD. Существует еще несколько подобных типов, которые мы не будем рассматривать подробно (в качестве примера можно привести типы "набор примитивов"' и "таблица диспетчера страниц"').
Данные выше определения типов данных, исчерпывают почти все, что есть по этому вопросу в AutoLISP. Остается только определить самый важный тип данных AutoLISP - список.
С точки зрения AutoLISP все перечисленные типы данных являются простыми, т.е. переменные принадлежащие к одному из перечисленных выше типов, не могут быть расчленены на составные части. Введем важное определение которое понадобится нам позднее:
Переменные любого из простых типов называются атомами.
Примеры атомов: 8, 12.5, “SAPR_TM”
Списком называется набор разделенных пробелами атомов или списков
заключенный в круглые скобки.
Например: (1324 22.4 tet) - список из трех элементов, первые два – целое и действи-тельное числа, tet - переменная с присвоенным значением к моменту объявления списка в программе. (12.5 7 (“Иван Грозный” “Student”) (2.4 5.55 1213)) – список состоя-щий из 4 элементов, два из которых в свою очередь являются списками.
Переменные которые не могут быть расчленены на составные части называются АТОМАМИ.
Функции присвоения
Переменные в языке 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 объявленной ранее.
Следует обратить внимание, что выражения языка всегда отделяются друг от друга не менее чем одним ПРОБЕЛОМ.