Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METHOD / Основы САПР / Лекц_Основы_САПР.doc
Скачиваний:
2353
Добавлен:
05.03.2016
Размер:
2.06 Mб
Скачать

Организация циклов

Как и многие языки программирования. 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“ “ “)

Соседние файлы в папке Основы САПР