- •Основы сапр
- •Лекция 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 имеет средства организации повтора выполнения групп операторов. Циклы полезны, например:
для уменьшения числа операторов в программе (в случае повтора однотипных действии)
для повтора выполнения процедуры до отмены ее пользователем
для получения решения математической задачи со сходимостью
для пакетной обработки списков данных (например, при работе с DXF- файлом)
(repeat число выражение1 выражение2 . . . )
Простейшим оператором повтора является оператор RЕРEAT. Эта функция повторяет любое число операторов в выражениях указанное число раз. Возвращается последнее значение последнего выражения цикла.
Функция WHILE похожа на функцию REPEAT, однако число повторов не определено, а выход из цикла осуществляется по условию логического отношения. В отличие от структуры IF оператор WHILE не включает в себя выполнение какого-либо выражения в том случае, если логическое отношение принимает значение FALSE. Функция WHILE позволяет включать в свое тело неограниченное число операторов. В начале выполнения каждого цикла проверяется условие логического отношения и если оно равно TRUE (истина), выполняются операторы выражения, после чего опять проверяется условие логического отношения и так до тех пор, пока это условие не станет ложным - примет значение FALSE.
Внимание! Один из операторов выражения цикла WHILE, обязательно должен изменять условие логического отношения Отсутствие этого влияния, может привести к зацикливанию программы. Цикл WHILE возвращает значение последнего вычисленного перед выходом из цикла выражения. Если условие логического отношения изначально было ложным и вхождения в тело цикла не было, WHILE возвращает nil. Цикл WHILE можно использовать также для организации итераций. Итерация - это процесс повторения группы вычислений до тех пор. пока результат вычисления одного или более выражении не станет удовлетворять какому-то условию. Логического отношения итерационного цикла WHILE обычно содержит некоторую переменную, значение кото-рой изменяется в процессе выполнения тела цикла.
Например: (setq str “OK_”) (setq n 0) (setq sp (list “S” “A” “P” “R”))
(while (< n (length sp)) (setq str (strcat str (nth n sp))) (setq n (+ n 1)) )
Переменной str присваивается значение строковой константы “OK_SAPR”.
Вызов команд Автокада из программы на языке AutoLisp
Ввод данных в программу на AutoLISP и вспомогательные вычисления над ними призваны служить автоматизации проектирования. Поэтому в AutoLISP не есть средство, позволяющее обращаться к командам Автокада из программ пользователя. Таким средством является функция языка AutoLisp COMMAND:
(command аргумент1 аргумент2 . . .)
Эта функция выполняет команду AutoCAD из AutoLisp и всегда возвращает nil. Аргументы представляют собой команды AutoCAD и их опции; каждый аргумент вычисляется и посылается в AutoCAD как ответ на соответствующий запрос. Имена команд и опции представляются как строковые константы, двухмерные и трехмерные точки - как списки из двух или трех действительных чисел соответственно. Пустая строка функции COMMAND равносильна нажа-тию пробела на клавиатуре. Вызов COMMAND без аргументов равносилен нажатию CTRL С с клавиатуры и прерывает большинство команд п. AutoCAD.
Например:
(command “redraw”) - будет выполнена команда п.AutoCAD REDRAW.
(command “zoom” “p”) - будет выполнен переход к предыдущему изображению экрана (если оно существует!).
Если переменная Автокада CMDECHO установлена в 0 то при выполнении этой функции на экран не будут выводиться информационные строки выполнение команды. На использование этой функции налагаются некоторые ограничения:
Функции семейства GET не могут быть вложены в функцию COMMAND. Следует присваивать все необходимые значения переменным заранее.
С помощью функции COMMAND нельзя работать с такими командами п. AutoCAD, как, DTEXT, DROW, PLOT, а также с командами, объявленными пользователем
(defun С:команда)
Нельзя использовать восклицательный знак для указания команде п. AutoCAD значения переменной.
Например: (setq pt1 (getpoint”Enter first point\n”)
(setq pt2 (getpoint”Enter second point\n”)
(command “line” pt1 pt2 “ “)
(command “erase” “l“ “ “)