Лабораторная работа №1
«Введение в элементы языка ЛИСП»
Цели и задачи выполняемой работы:
1. Ознакомиться с языком ЛИСП;
2. Получить практический навык по применению примитивов на языке ЛИСП;
3. Написать программу на языке ЛИСП;
4. Ознакомится со средой разработки и получить навык работы в ней.
Краткая информация о языке ЛИСП
При записи функций использована следующая терминология:
<атом> — константа или переменная любого типа;
<число> — целая или действительная константа или переменная, имеющая числовое значение, или функция, возвращающая числовое значение;
< целое > — то же, но только для целочисленных значений;
<угол> — то же, но в предположении, что числовое значение отражает некоторый угол в радианах;
символ > - текстовая константа, содержащая один символ, или переменная, или функция, возвращающая символ;
текст > — текстовая константа или переменная, имеющая текстовое
значение, или функция, возвращающая такое значение;
<список> — конструкция вида (<элемент>...) или переменная, имеющая значение списка, или функция, возвращающая список;
точка > — любой список, содержащий два или три элемента, которые являются числами и могут быть интерпретированы как координаты геометрической точки;
функция > — любая функция Автолиспа (встроенная или определенная
пользователем); при выполнении функции возможно обращение к функциям, "вложенным" в нее;
имя-функции > — последовательность символов, совпадающая с именем
какой-либо функции Автолиспа;
<условие> — константа вида Т или NIL, или переменная, или функция в предположении, что переменная может принимать, а функция возвращать значение NIL;
|
< элемент > — константа, переменная, список или функция;
<выражение> — любая запись на Автолиспе, т.е. константа, переменит список, функция или последовательность функций;
<ДФ>— дескриптор файла, т.е. переменная, принимающая значение, воз- вращенное функцией OPEN.
<примитив> — "имя-примитива", т.е. переменная, принимающая значение,
возвращенное такими функциями, как ENTNEXT, ENTLAST, CAR (ENTSEL) и
т.п., или сама такая функция;
< набор > — "имя набора", т.е. переменная, принимающая значение, возвращенное такими функциями, как SSGET, SSADD и т.п., или сама такая функция.
(+ <число> <число>...)
Возвращает число, равное сумме аргументов. Если хотя бы один аргумент действительный, то результат действительный, если все аргументы целые - то целый.
(- <ЧИСЛО> <ЧИСЛО>...)
Возвращает число, полученное в результате вычитания из первого аргумента остальных аргументов. Результат действительный, если хотя бы один аргумент действительный.
(* <ЧИСЛО> <ЧИСЛО>...)
Возвращает число, равное произведению аргументов. Результат действительный, если хотя бы один аргумент действительный.
(/ <число> <число>...)
Возвращает число, полученное в результате деления первого аргумента на остальные аргументы. Результат действительный, если хотя бы один аргумент действительный. При делении целых чисел остаток отбрасывается.
(1+ <число>)
Возвращает значение аргумента, увеличенное на единицу. Тип результаты совпадает с типом аргумента.
(1- <число>)
Возвращает значение аргумента, уменьшенное на единицу. Тип результата совпадает с типом аргумента.
|
(= <элемент> <элемент>...)
Элементами могут быть или числа или тексты. Функция возвращает Т, если нее аргументы равны, иначе — NIL.
(/= <элемент> <элемент>)
Функция, возвращает Т, если аргументы не равны, иначе — NIL. (Аргументы - числа или тексты)
(< <элемент> <элемент>...)
Функция возвращает Т, если каждый последующий аргумент больше предыдущего, иначе — NIL (Аргументы — числа или тексты.)
(<= <элемент> <элемент>...)
(> <элемент> <элемент>...)
(>= <элемент> <элемент>...)
Это функции сравнения, аналогичные функции "<". (~ <целое>)
Возвращает дополнение аргумента до единицы, т.е.
(~ 3) возвращает —4
(~ —7) возвращает 6 и т.д.
(ABS <целое>)
Возвращает абсолютное значение аргумента. Тип результата совпадает с типом аргумента.
(AND <условие>...)
Функция возвращает NIL, если хотя бы один аргумент имеет значение NIL, иначе — Т.
(ANGLE <точка 1> <точка 2>)
Возвращает действительное число, равное значению угла в радианах, образованного прямой от <точки 1>в <точку 2> и осью ОХ в текущей ПСК.
(ANGTOS <угол> [<целое 1> [<целое 2>]])
Возвращает текст, выражающий значение <угла>. Дополнительны* менты отражают представление и точность (см. п.4.1).
(APPEND <список> <список>...)
Возвращает список, образованный соединением списков-аргументов
(APPLY <имя-функции> <список>)
Функция, имя которой указано, выполняется в цикле для каждого элемента < списка >. Последний результат возвращается.
(ASCII <текст>)
Возвращает целое число, равное ASCII-коду первого символа в < тексте>
|
(ASSOC <ключ> <список>)
Возвращает подсписок из <списка>, найденный по <ключу> Если подсписок не найден, возвращается NIL.
(ATAN <число 1> [<число 2>])
Возвращает число, равное арктангенсу <числа 1>, если <число 2> но, и арктангенсу тангенса от деления чисел если <число2> задано.
(ATOF <текст>)
Преобразует текст в действительное число и возвращает это число.
(ATOI <текст>)
Преобразует текст в целое число и возвращает это число.
(АТОМ <элемент>)
Здесь аргумент может быть атомом или списком. Функция возвращает если аргумент — атом, иначе — NIL.
(BOOLE <целое1> <целое2> <целоеЗ>...)
Функция выполняет какую-либо функцию алгебры логики (Булеву функции.| побитно для аргументов от <целого2> и далее. Аргумент <целое1> может иметь значение от 0 до 15 и означает номер Булевой функции. Возвращаемый результат — целое число.
(BOUNOP <атом>)
Возвращает Т, если аргумент имеет какое-либо значение, отличное от NIL, иначе — NIL.
(CAR <целое>)
Возвращает первый элемент списка.
(CDR <список>)
Возвращает список без первого элемента. Для точечных пар возвращает »торой элемент пары.
CADR, CDAR, CADDR и т.п. — различные возможные комбинации функций CAR и CDR. Например, CADDR эквивалентно CAR(CDR(CDR)).
(CHR <целое>)
Возвращает текстовую константу, состоящую из одного символа, ASCII-код которого равен значению аргумента.
(CLOSE <ДФ>)
Функция закрывает файл и возвращает NIL.
(COMMAND <аргумент>...)
Функция вызывает команду или последовательность команд ACAD и возвращает NIL. Аргументами могут быть имена команд, аргументы этих команд, PAUSE,"" (последнее означает пробел или <Enter>).
CCOND (<условие> <выражение>)...)
Функция последовательно проверяет <условия>. Если она находит <усло-вие>, значение которого отлично от NIL, то выполняет соответствующее выражение > и на этом прекращает свою работу, возвращая значение < выражения >. Если все <условия> обращаются в NIL, то возвращается NIL.
(CONS <элемент> <список>)
Возвращает список, в котором к прежнему <списку> добавлен новый <элемент> (в начало списка).
(CONS <элемент> <элемент>)
Формирует точечную пару из двух элементов.
(COS <угол>)
Возвращает косинус от аргумента.
(DEFUN <имя-функции> ([<переменная-аргумент>]...
[/<локальная-переменная>...]]) <выражение>
Описывает функцию, имя которой задано. После выполнения DEFUN описанную функцию можно вызывать в программе. Возвращает имя описанной функции, (Описание функции с помощью DEFUN является с точки зрения программиста подпрограммой, а < переменные-аргументы > — ее формальными пара-метрами)
(DISTANCE <точка1> <точка2>)
Возвращает число, равное расстоянию между точками (двух- или трехмерными).
(ENTDEL <примитив>)
Удаляет <примитив> из изображения или восстанавливает его изображение, если он ранее был удален с помощью ENTDEL (в текущем сеансе работы (АCAD). Возвращает имя примитива.
(ENTGET <примитив>)
Возвращает список, являющийся описанием примитива в базе данных чертежа.
(ENTLAST)
Возвращает имя последнего удаленного примитива в базе данных чертежа.
(ENTHOD <список>)
Аргумент должен быть построен по правилам описаний примитивов в базе данных, т.е. <список> должен относиться к какому-либо примитиву (или субпримитиву) чертежа. В результате выполнения функции происходит обновление изображения примитива на экране. Функция возвращает список-аргумент.
(ENTNEXT [<примитив>])
Возвращает имя первого (неудаленного) примитива в базе данных чертежа
если аргумента нет, или имя примитива, следующего за указанным. При отсутствии примитива возвращает NIL
(ENTSEL [<текст>])
Создает паузу, выдает < текст > (если он имеется), и ожидает указания на примитив. Возвращает список из двух элементов: имени примитива и точки указания.
(ENTUPD < примитив>)
Используется после функции EMTMOD, обновляющей субпримитивы сложного примитива. После выполнения ENTUPD изображение этого примитива на экране обновляется. Функция возвращает имя примитива.
(EQ <элемент1> <элемент2>)
Возвращает Т, если оба аргумента представляют собой один и тот же объект (например, записанный с помощью SETQ в разные переменные), иначе — NIL.
(EQUAL <элемент1> <элемент2> [<число>])
Возвращает Т, если аргументы равны с точностью до указанного < числа >, иначе ~ NIL. Если допуск не задан, то равенством считается полное совпадение.
(*ERROR* <текст>)
Эту функцию может описать программист в своей программе. Обращение к ней будет производиться автоматически при возникновении какой-либо ошибки в процессе работы программы. Аргументом может являться текст, который предполагается выдать в качестве сообщения об ошибке (см. РП).
(EVAL <элемент>)
Возвращает значение аргумента.
(ЕХР <число>)
Возвращает число, вычисленное как е в степени <число>.
(ЕХРТ <чисао1> <чисао2>)
Возвращает число, полученное возведением <числа1> в степень <числа2>. Результат целый, если оба аргумента целые, иначе — действительный.
(FINDFILE <текст>)
Аргумент должен быть именем файла, с расширением и, возможно, маршрутом. Функция просматривает указанный каталог. Если каталог не указан, то просматриваются каталоги: текущий, текущего чертежа, AutoCADa. Если указанный файл найден, возвращается его полное имя с маршрутом (текст), если файл не найден, возвращается NIL.
(FIX <число>)
Возвращает целое число. Дробная часть аргумента (если она имеем отбрасывается.
(FLOAT <число>)
Возвращает действительное число.
(FOREACH <переменная> <список> <выражение>)
Функция организует цикл: <выражение> выполняется столько раз, сколько элементов имеется в < списке >. В < выражении > должна использоваться <переменная>, которая на каждом шаге цикла будет принимать значение элемента < списка >. Функция возвращает значение последнего выражения.
(GCD <целое1> <целое2>)
Возвращает наибольший общий делитель двух чисел.
(GETANGLE [<точка>] [<текст>])
Функция создает паузу и ожидает ввода числа или точки (если аргумент <точка > указан) или двух точек (если аргумент < точка > не указан). <Текст> выдается в зону подсказки. Функция возвращает действительное число, равное углу, образованному прямой, проходящей через две точки и осьюX (при выводе точек), или введенное число.
(GETC0RNER [<точка>] [<текст>])
Функция создает паузу и ожидает ввода точки. При перемещении курсора по экрану отображается "резиновый" прямоугольник с вершиной в <точке>. Функция возвращает введенную точку.
(GETDIST [<точка>] [<текст>])
Функция создает паузу и ожидает ввода числа или точки (если аргумент <точка> указан) или двух точек (если аргумент <точка> не указан) Функция возвращает действительное число, равное расстоянию между точками (двух- или трехмерными), если вводились точки, или введенное число.
(GETENV <имя-переменной-среды>)
Возвращает текст, являющийся значением переменной среды, т.е. переменной, устанавливаемой в MS DOS с помощью команды SET.
(GETINT [<текст>])
Функция создает паузу, ожидает ввода целого числа и возвращает это число.
(GETKWORD [<текст>])
Функция создает паузу и ожидает ввода ключевого слова из списка ключевых слов, определенных предшествующей функцией INITGET. Возвращает денное ключевое слово.
(GETORIENT [<точка>] [<текст>])
Выполняется так же, как GETANGLE. Отличается тем, что учитывает правление оси ОХ в текущей ПСК (см. п.4.2).
(GETPOINT [<точка>] [<текст>])
Функция создает паузу и ожидает ввода точки. Если аргумент < точка > задан, то перемещение курсора сопровождается "резиновой линией". Функция возвращает введенную точку.
(GETREAL [<текст])
Функция создает паузу, ожидает ввода действительного числа и возвращает это число.
(GETSTRING [<элемент>] [<текст>])
Функция создает паузу, ожидает ввода строки символов и возвращает введенную строку. Если первый аргумент присутствует и не обращается в NIL, то концом ввода будет нажатие на < Enter >, иначе ввод закончится первым же пробелом.
(GETVAR <текст>)
Возвращает значение системной переменной, имя которой указано в качестве аргумента. (Если имя указано неверно, возвращается NIL.)
(GRAPHSCR)
Функция переключает экран из текстового в графический и возвращает NIL.
(GRCLEAR)
Функция очищает графический экран и возвращает NIL.
(GRDRAU <точка1> <точка2> <целое1> [<целое2>])
Функция чертит вектор от <точки1> к <точке2>. <Целое1> — код цвета. Если <целое2> не равно нулю, то вектор подсвечивается. Возвращается NIL.
(GRTEXT [<целое1> <текст> [<целое2>]])
Функция выдает текст в зону экрана, определяемую значением <целого1>: <целое1 > > =0 — в строку экранного меню;
<целое1> -1 — в строку режима вверху экрана;
<целое1> =-2 — в строку координат вверху экрана.
Если <целое2> не равно нулю, текст будет подсвечен.
Если аргумент отсутствует, то состояние зон экрана восстанавливается. Функция возвращает NIL.
(GRREAO [<элемент>])
Функция позволяет непосредственно считывать информацию с устройства ввода. Функция создает паузу и ожидает любого ввода, после чего возвращает список. Состав списка зависит от того, какой ввод был произведен. Если
найден или содержит ошибки, то возвращается значение <элемента>. Если аргумент отсутствует, то выдается сообщение об ошибке и программа прекращает работу.
(LOG <число>)
Возвращает действительное число - натуральный логарифм от аргумента.
(LOGANO <цедое1> <целое2>...)
Возвращает целое число, являющееся результатом побитового выполнения логической операции И над аргументами.
(L0GIOR <целое1> <целое2>...)
Возвращает целое число, являющееся результатом побитового выполнения логической операции ИЛИ над аргументами.
(LSH <целое1> <целое2>)
Возвращает целое число, являющееся результатом побитового сдвига <целого1>. Число сдвигов определяется <целым2>, а направление сдвига его знаком (положительным считается сдвиг влево).
(МАРШ <имя - функции> <список1>...<списокN>)
Функция организует выполнение указанной функции. Число списков должно соответствовать числу аргументов функции. Число шагов цикла равно числу элементов в каждом из списков. Возвращаемый результат — список, содержащий столько элементов, сколько было в каждом из исходных списков.
(МАХ <число>...)
Возвращает число, равное максимальному из списка аргументов (целое или действительное).
(MEMBER <элемент> <список>)
Возвращает список от <элемента> до конца <списка>. Если <элемент> не входит в состав <списка>, то возвращается NIL.
(MENUCMD <текст>)
Функция управляет "листанием" страниц (подразделов) меню. Текст строится по схеме "имя-раздела = метка подраздела" или "имя-раздела = *". Функция возвращает NIL.»
(MIN <число>)
Возвращает число, равное минимальному из списка аргументов (целое или действительное).
(MINUSP <число>)
Возвращает Т, если аргумент отрицательный, иначе — NIL. (NOT <элемент>)
Возвращает Т, если значение элемента — NIL, иначе возвращает NIL.
(QUOTE <«выражение>)
Возвращает выражение, не вычисляя его. Альтернативная форма: <выражение>
(READ <текст>)
Возвращает атом или список. При этом < текст > должен быть построен как атом или список из одного элемента (т.е. без пробелов).
(READ-CHAR [<ДФ>])
Считывает очередной символ из буфера ввода и возвращает ASCII-код этого символа. Если символов в буфере нет, то ожидает ввода строки с клавиатуры при указанном <ДФ> считывает очередную запись из файла.
(READ-LINE [<ДФ>])
Если аргумент не задан, то функция создает паузу и ожидает ввода с клавиатуры. После ввода возвращают введенное значение в форме текстовой строке Если аргумент задан, то считывает очередную запись из файла и возвращает ее в форме текстовой строки. Если достигнут конец файла, то возвращает NIL.
(REDRAW [<примитив>] [<целое>])
Если аргументы не заданы, то функция "освежает" экран. Если задан первый аргумент, то функция восстанавливает примитив (после действия GRCLEAR). Если заданы оба аргумента, то функция изменяет изображения примитива в зависимости от режима, имеющего значения от 1 до 4.
(REM <число1> <число2>...)
Возвращает остаток от деления <числа1> на остальные <числа >. Если хотя бы одно <число> действительное, то результат также действительный, иначе — результат целый.
(REPEAT <целое> <выражение>) '
Функция организует цикл по выполнению < выражения >. Число шагов цикла задается первым аргументом. Возвращается значение < выражения >, полученное на последнем шаге цикла.
(REVERSE <список>)
Возвращает список, элементы которого расставлены в обратном порядке по сравнению с исходным списком.
(RTOS <действительное-число> [<целое1> [<целое2>]])
Возвращает текст, соответствующий значению <действительного-числа> <целое1> может иметь значения от 1 до 5 (обычное значение 2) и задает режим представления. <Целое2> задает точность. Если необязательные аргументы не заданы, то режим и точность задаются в соответствии со значениями системных переменных.
(SET <переменная> <элемент>)
Вычисляет <элемент> и возвращает его значение. Записывает это значение в некоторую переменную, имя которой было присвоено < переменой > с помощью SETQ. Таким образом, в отличие от "прямой" записи в переменную с помощью SETQ функция SET осуществляет "косвенную" запись.
(SETQ <переменная> <элемент>...)
Функция может иметь много пар аргументов. Для каждой пары вычисляется значение <элемента> и записывается в <переменную>. Возвращает значение последнего <элемента>.
(SETVAR <текст> <элемент>)
Здесь < текст > должен совпадать с именем системной переменой. Функция вычисляет значение <элемента> и присваивает его указанной системной переменной (при условии, что она не является переменной "только для чтения"). Возвращает вычисленное значение.
(SIN <число>)
Возвращает действительное число, равное синусу от значения аргумента.. (SQRT <число>)
Возвращает действительное число, равное квадратному корню от значения аргумента.
(SSADD [<примитив> [<набор>]])
Возвращает имя набора: пустого, если нет аргументов; содержащего <примитив >, если указан один аргумент; содержащего < набор > с добавлением к нему < примитива >, если указаны оба аргумента.
(SSDEL <примитив> <набор>)
Удаляет < примитив > из < набора >, если он там имелся. Возвращает имя набора. Если операция удаления не выполнилась, возвращает NIL.
(SSGET [<буква>] [<точка1>[<точка2>]])
Функция возвращает имя набора примитивов. Является в Автолиспе основным средством формирования наборов. При отсутствии аргументов набор формируется из примитивов, указываемых пользователем. Аргументы могут задавать другие режимы выбора, при этом аргумент < буква > может иметь значения "С"("Т"), "L"("П"), "W"("P"), "С"("С"), "Х"("Х").
(SSLENGTH <набор>)
Возвращает целое число, равное числу примитивов в <наборе>. (Если это число больше 32767, то возвращается действительное число.)
(SSMEMB <примитив> <набор>)
Функция проверяет, входит ли <примитив> в <набор>. Если входит, то возвращается имя примитива, иначе — NIL.
(SSNAME <набор> <целое>)
Возвращает имя примитива из < набора >. Номер требуемого примитива в наборе задается вторым аргументом (номер первого примитива считается равным нулю). Если <целое> больше числа примитивов в наборе минус единица, то возвращается NIL.
(STRCASE <текст> [<элемент>])
Возвращает текст, совпадающий с аргументом < текст >, все символы которого переведены в верхний регистр, если второй аргумент имеется и не равен NIL, иначе — в нижний регистр.
(STRCAT <текст1> <текст2>...)
Возвращает текст, полученный в результате "сцепления" аргументов.
(STRLENGTH <текст>)
Возвращает целое число, равное числу символов в < тексте >.
(SUBST <элемент1> <элемент2> <список>)
Функция обеспечивает замену элементов в списке: все элементы, значения которых совпадают со значением <элемента2>, заменяются значениями <эле-мента1>. Функция возвращает список.
(SUBSTR <текст> <целое1> [<целое2>])
Возвращает текст, являющийся частью исходного < текста >. <Целое1> указывает номер первого символа, а <целое2> — количество символов. Если второй аргумент отсутствует, то последним символом является последний символ <текста >.
(TBLNEXT <текст> [<элемент>])
Функция позволяет прочитать содержимое одной из символьных таблиц системы AutoCAD, соответствующих данному чертежу. Здесь < текст > должен совпадать с именем требуемой таблицы: "LAYER" — для таблицы слоев, "STYLE" — для гарнитур шрифтов и др. Если второй аргумент присутствует и не равен NIL, то обращение осуществляется с первой точки входа, иначе — с очередной точки входа (с учетом предыдущих обращений к этой же таблице с помощью TBLNEXT). Функция возвращает структурированный список, похожий на список, возвращаемый функцией ENTGET.
(TBLSEARCH <текст1> <текст2> [<элемент>])
Функция возвращает такой же результат, как и функция TBLNEXT. Аргумент <текст2> задает имя объекта (имя, идущее в списке данных за кодом 2), данные о котором требуется считать. Если <элемент> присутствует и не равен NIL, то следующее обращение с помощью TBLNEXT к этой же таблице будет производиться со следующей точки входа, т.е. будут возвращаться данные о следующем объекте.
(TERPRI)
Переход к началу новой строки при выдаче в зону подсказок. Функция возвращает NIL.
(TRACE <имя-функции>...)
Функция предназначена для отладки программ. Имена всех функций, входящих в список аргументов, и результаты их выполнения будут появляться на экране в процессе их выполнения при работе программы. Возвращается имя последней функции в списке.
(TRANS <точка> <эдемент1> <элемент2> [<элемент3>])
Функция осуществляет преобразование координат < точки > из одной системы в другую. Аргументы <элемент1> и <элемент2> задают коды (признаки) старой и новой систем координат. Если <элемент3> отсутствует или равен нулю, то возвращается точка (с новыми координатами), иначе — список чисел, задающих перемещение координат.
(TYPE <элемент>)
Возвращает атом, значение которого соответствует типу аргумента. Например, для действительного аргумента — REAL, для списка — LIST, для имени примитива — ENAME и др.
(UNTRACE <имя- функции>...)
Функция отменяет действие функции TRACE для тех функций, имена которых перечислены в списке аргументов.
(VER)
Функция возвращает текст, содержащий номер текущей версии системы AutoCAD.
(VMON)
Функция позволяет сократить требуемую оперативную память за счет временной выгрузки функций на диск. Целесообразно обращаться к VMON в начале программы (перед нерпой функцией DEFUN).
(VPOHTS)
Функция возвращает список, содержащий данные о действующих на данный моментом видовых экранах (номера и координаты). Текущий экран является первым в списке
(WHILE <условие> <выражение>)
Основная функция для организации циклов. Шаги цикла повторяются, пока
<условие> имеет значение, отличное от NIL. Функция возвращает результат вычисления <выражения> на последнем шаге цикла.
(WRITE-CHAR <целое> [<ДФ>])
Функции выводит символ в строку подсказок или в файл (при наличии второго аргумента). Аргумент <целое> должен совпадать с ASCII-кодом символа. Функции возвращает целое число, задаваемое значением первого аргумента.
(WRITE-LINE <текст> [<ДФ>])
Функция выводит текст в строку подсказок или в файл (при наличии второго аргумента) Но возвращает текст, совпадающий со значением первого аргумента.
(ZEROP <ЧИСЛО>)
Возвращает Т, если значение аргумента равно нулю, иначе — NIL.
Недостающими функциями языка можно воспользоваться в Помощи среды разработки.
Пример программы
Код:
(defun conserve(x0 y0 r rr b aa ah)
(setq r2(* r 1.12) rr2(/ rr 1.07)
p1(* 2 r2) r1(- p1 r) p2(* 2 rr2) rr1(- p2 rr)
p3(- rr2 r2)
rspher(* 0.5 p3) p4(+ r2 rspher) p5(/ rspher p4)
n1(/ 3.1416 p5) n(fix n1)
x1(+ x0 rr) x2(+ x0 rr1) x3(+ x0 r1) x4(+ x0 r)
p6(+ r2 rr2) p7(* 0.5 p6)
x5(+ x0 p7) p8(* 1.1 rr) p9(+ x0 p8) p10(- x0 p8)
p11(+ y0 p8) p12(- y0 p8)
t0(list x0 y0) t1(list x1 y0) t2(list x2 y0)
t3(list x3 y0) t12(list aa ah)
t4(list x4 y0) p13(* 0.5 b) t8(list x5 y0 p13)
t6(list p10 p11) t7(list p9 p12) t9(list x0 y0 p13)
)
(command)
(command "круг" t0 rr)
(command "круг" t0 rr1)
(command "круг" t0 r1)
(command "круг" t0 r)
(command "выдавить"t1 t2 t3 t4 "" b "" "")
(command "шар" t8 rspher)
(command "dispsilh" "1" "delay" "1000")
(command "_vscurrent")
(command "_Conceptual")
)
(conserve 300.0 200.0 75.0 160.0 70.0 594.0 420.0)
Внешнее описание полученного чертежа:
рис 1. Внешнее описание полученного чертежа
Для выполнения каркасной модели была выбрана программа
Работа в среде разработки.
Для запуска автоматизированной системы АвтоКАД необходимо:
Загрузить ПЭВМ.
Найти «значок» (системы АвтоКАД) на рабочем столе и двойным кликом «мыши» запустить систему АвтоКАД.
После этих действий должно появиться окно системы АвтоКАД.
Для выполнения этой работы в системе АвтоКАД необходимо ознакомиться с командой загрузки программы написанной на языке Лисп в систему АвтоКАД: _Load(”имя файла”)
Практические рекомендации:
Для выполнения работы необходимо ознакомиться с теорией и общими
рекомендациями по оформлению отчета.
- Программа может быть написана на любом языке программирования.
- Файлы и оформленная работа сохраняется в электронном виде на электронном носителе.
- Оформленная работа (в бумажном варианте) представляется преподавателю.
- Задание, выполняемая студентами, выдаются преподавателем
- Исходный код программы должен быть читабельным и включать в себя комментарии.
При защите лабораторной работы студент должен отчитаться по выполненной работе.
Выполненные задания оцениваются по следующим критериям:
- корректность реализации основного задания;
- читабельность исходного кода программы и наличие в нем комментариев;
- умение автора программы объяснить алгоритм ее работы и исходный код.
- дополнительная функциональность, реализованная помимо необходимого задания.
Контрольные вопросы
1.Объясните математическую модель задачи.
2. Поясните работу функций языка ЛИСП
3. Опишите алгоритм разработки программы