русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Язык программирования Auto LISP


Дата добавления: 2015-08-06; просмотров: 4471; Нарушение авторских прав


Это один из диалектов языка программирования Command LISP. Данный язык был создан как язык функционального программирования и относится к языкам декларативного типа (т.е описательный). Язык хорошо сочетается с графикой, прост в изучении и универсален.

Язык имеет множество встроенных функции и может формировать чертеж, чтобы получить чертеж необходимо разработать программу. В Auto LISP используется префиксная форма записи. Это такой вид записи в котором имя функции вместе с аргументом заключается в круглые скобки.

Написание программы на языке Auto LISP делится на 3 этапа:

  1. Ввод исходных данных,
  2. Определение опорных точек чертежа
  3. Соединение полученных точек дугами, прямыми

Углы откладываются в радианах, по оси Х.

 

3.2 Начало работы в Auto LISP.

Текстовый редактор Visual LISP предназначен для эффективной разработки, проверки и отладки программ на Auto LISP.

Окно текстового редактора вызывается автоматически при открытии файла с программой на Auto LISP в диалоговом окне Open File to edit/view (открыть файл для редактирования/просмотра).

Вызвать диалоговое окно открытия файла можно двумя способами:

выбрать пункт Open File...(открыть файл) падающего меню File (файл);

нажать комбинацию клавиш Ctrl + O.

В диалоговом окне открытия файла необходимо найти соответствующую папку (каталог) и дважды щелкнуть по ней мышкой. В раскрытой папке (каталоге) аналогичным способом следует открыть нужный файл, который будет помещен в текстовое окно системы Visual LISP (см. рис. 1.7).

Когда вы вносите изменения в тексте программы в редакторе или добавляете новый текст, рядом с именем файла в строке состояния появляется звездочка (*). Она сохраняется рядом с названием файла до тех пор, пока вы не сохраните внесенные изменения либо не закроете файл.

Следует помнить, что одновременно можно работать только с одним файлом в одном окне текстового редактора. Каждый раз при открытии файла Visual LISP отображает файл в новом окне текстового редактора.



Текстовый редактор Visual LISP обеспечивает цветное отображение программ. Кроме того, он выполняет синтаксический анализ программ на языке Auto LISP и назначает соответствующие цвета различным константам, именам функций. Это позволяет выявлять синтаксические ошибки до выполнения компиляции.

Текстовый редактор предоставляет возможность форматировать программы Auto LISP, тем самым делая их более удобными для чтения. При этом можно выбирать различные стили форматирования.

Программы на языке Auto LISP содержат большое количество круглых скобок. Текстовый редактор помогает найти ближайшую закрывающую круглую скобку, которая соответствует указанной открывающей скобке.

Путем высвечивания текстовый редактор Visual LISP позволяет выбирать отдельные фрагменты программы и выполнять их. При этом необязательно выходить из текстового редактора и выполнять всю программу в целом. Помимо этого, у пользователя есть возможность осуществлять поиск слова или выражения, проверять синтаксис отдельных выделенных фрагментов программы.

Текстовый редактор позволяет загрузить программу для последующего ее выполнения. В таком случае важно, чтобы окно текстового редактора было активным. Если вы не уверены в этом, щелкните мышкой в любом месте окна и сделайте его активным. Чтобы загрузить программу, щелкните мышкой по кнопке Load activate edit window (загрузить программу из активного окна редактирования) или выберите пункт Load text in editor (загрузить текст программы из активного окна редактирования) падающего меню tools (инструменты) главного меню Visual LISP (см. рис. 1.8).

После загрузки программы ее можно запустить на выполнение из командной строки консоли. Для этого достаточно ввести имя программы в круглых скобках и нажать клавишу Enter.

Во время ввода команд с консоли Visual LISP или выполнения программы, загруженной из текстового редактора, можно переключаться между окнами AutoCAD и Visual LISP. Помимо стандартных методов переключения между приложениями Windows, существует еще несколько методов переключения между окнами AutoCAD и Visual LISP.

Если вы находитесь в Visual LISP, используйте пункт Activate AutoCAD (Активизировать AutoCAD) падающего меню Window (окно) в главном меню Visual LISP.

Рис: 1.8 Загрузка текста программы из активного окна редактирования.

 

Допустим, вы находитесь в AutoCAD и хотите вернуться в среду Visual LISP. В таком случае введите команду VLIDE (вызов среды Visual LISP) в командной строке AutoCAD.

Окно консоли Visual LISP служит для отображения диагностических сообщений об ошибках в программах Auto LISP и результатах работы многих функций Auto LISP.

Для отображения текущего значения переменной Auto LISP в Visual LISP достаточно набрать имя переменной в окне консоли и нажать клавишу Enter (ввод).

Чтобы выполнить, оценить и просмотреть результаты, выражение Auto LISP можно вводить в окне консоли Visual LISP. Если требуется ввести больше одной строки, то для ввода следующей строки нажмите комбинацию клавиш Ctrl+Enter. Несколько выражений можно вводить до нажатия клавиши Enter (ввод).

Помните, что у вас есть возможность копировать и передавать текст между консолью и оком текстового редактора также доступны в окне консоли.

Нажатием клавиш Tab можно восстановить предыдущую команду, которая была введена в окне консоли. Неоднократное нажатие клавиши Tab восстанавливает более ранние команды. Если нажать комбинацию клавиш Shift + Tab, команды будут восстановлены в обратном направлении.

С помощью клавиши Tab можно осуществить ассоциативный поиск. Если, например, ввести выражение, которое начинается с символов (+), а затем нажать клавишу Tab, Visual LISP отыщет последнюю введенную команду, которая начинается с символов (+). Чтобы изменить направление поиска, следует нажать комбинацию клавиш Shift+Tab.

Клавиша Esc (Escape - отменить) удаляет любой текст после подсказки с консоли. Если нажать комбинацию клавиш Shift + Esc, можно будет отказаться от интерпретации текста, введенного с консоли в ответ на подсказку и перейти к следующей подсказке.

После нажатия правой кнопки мышки или комбинации клавиш Shift + F10 в любом месте окна консоли на экране появляются меню команд Visual LISP и опции. Они могут быть использованы для того, например, чтобы скопировать и вставить текст в командную строку консоли, найти текст или инициализировать Visual LISP.

Выход из среды Visual LISP можно осуществить двумя способами:

с помощью меню, для этого мышкой выберите пункт Exit (выход) падающего меню File (файл) главного меню;

с помощью комбинации клавиш Alt+Q.

И в том и другом случае на экране появится диалоговое окно Exiting Visual LISP... (выход из Visual LISP). На вопрос Really want to quit session? (действительно хотите выйти из Visual LISP?). Вы должны ответить Yes (Да) или No (нет), то есть щелкнуть по соответствующей кнопке. Если в тексте в любом окне редактора сделаны какие-либо изменения и они не были сохранены, то во время закрытия файла появится диалоговое окно с предложением сохранить изменения.

В ответ на запрос Save changes to WOROTNIC (Сохранить изменения в файл под названием WOROTNIC) необходимо щелкнуть по кнопке Yes (да), No (нет) или Cancel (отменить).

Если при выходе из Visual LISP остаются программы, которые открыты в окнах текстового редактора, Visual LISP автоматически открывает их вначале нового сеанса работы.

 

3.3.Изучение интегрированной среды Visual LISP

Структура и запуск Visual LISP.

Visual LISP (VLISP) – это интегрированная среда разработки программ на языке программирования Auto LISP в системе AutoCAD, которая значительно облегчает процесс создания программы, ее изменения, тестирования и отладки.

Visual LISP включает следующие функциональные компоненты:

Текстовый редактор, ориентированный на синтаксис языка Auto LISP и использующий язык кодирования цветом (DCL), что значительно упрощает чтение и отладку программ на языке Auto LISP;

Консоль, куда выдаются сообщения о результатах загрузки программы, различные диагностические сообщения и т.д.;

Форматтер, который преобразует текст программы и придает ему легко читаемый структурный вид;

Эмулятор Auto LISP, обеспечивающий наглядность процесса выполнения программы;

Программу проверки синтаксиса, распознавания неправильных конструкций Auto LISP;

Компилятор, который уточняет выполнение программы, ускоряет, а также обеспечивает безопасную и эффективную систему выдачи результатов;

Встроенную систему контроля, которая обеспечивает удобный доступ к переменным и значениям выражений с целью просмотра структуры данных и их изменений;

Отладчик, обеспечивающий высокий уровень отладки программ;

Контекстно-зависимые справки для функций Auto LISP;

Систему управления проектом, которая упрощает работу с приложениями;

Упаковщик компилируемых файлов Auto LISP в ARX-модули.

Visual LISP имеет собственный набор окон и меню, который отличается от соответствующего набора AutoCAD. Однако запуск интегрированной среды Visual LISP производится из системы AutoCAD. Вот почему при работе с Visual LISP систему AutoCAD необходимо хранить на рабочем столе в открытом виде. Если AutoCAD свернуть, то для продолжения работы с Visual LISP окно AutoCAD необходимо восстановить и сделать его активным. При работе с графикой интегрированная среда Visual LISP взаимодействует с системой AutoCAD, отвечая на подсказки относительно ввода. Запуск Visual LISP производится только после запуска системы AutoCAD. При этом возможны два варианта.

Первый из них предусматривает загрузку приложения Visual LISP с помощью меню. AutoCAD имеет иерархическую систему меню, состоящую из главного меню и системы падающих и всплывающих меню (подменю). Главное меню AutoCAD – это набор пунктов меню для вызова падающего меню. Набор пунктов главного меню располагается во второй строке рабочего стола AutoCAD. Падающее меню AutoCAD – это набор пунктов меню для вызова всплывающего меню, диалогового окна или команды AutoCAD. Набор пунктов падающего меню располагается под соответствующим пунктом главного меню. Всплывающее меню AutoCAD – это набор пунктов меню для вызова всплывающего меню, диалогового окна или команды AutoCAD. Набор пунктов всплывающего меню располагается справа от выбранного пункта меню. Выбор пункта меню можно выполнить щелчком по нему левой кнопкой мышки.

Чтобы произвести загрузку, вызовите в главном меню AutoCAD пункт Инструменты (см. рис 3.1) и выберите в падающем меню пункт Auto LISP. На экране появится всплывающее меню загрузки (см. рис. 3.1), содержащее два пункта: Загрузить и Редактор Visual LISP.

Рис.3.1 Диалоговое окно для запуска Auto LISP

Чтобы работать в редакторе, выберите пункт Редактор Visual LISP. На экране появится окно консоли Visual LISP (см. рис 3.2) с приглашением к работе _$ - набором текста программы.

Рис.3.2 окно консоли Visual LISP

Чтобы выбрать приложение Visual LISP (ранее созданный файл с программой, написанной на языке Auto LISP), выберите пункт Загрузить, на экране появится диалоговое окно загрузки файлов Load (см. рис. 3.3). После указания пути к файлу произойдет загрузка программы и начнется ее выполнение, например, ввод исходных данных.

Рис.3.3 Окно загрузки приложения Visual LISP

Второй вариант запуска предусматривает загрузку приложения Visual LISP с помощью команды VLIDE. В командной строке AutoCAD необходимо набрать команду VLIDE, нажать клавишу Enter (ввести). На экране появится главное окно Visual LISP(рис. 3.2).

В первой строке (строке заголовка) главного окна Visual LISP указано название окна Visual LISP for AutoCAD. Во второй строке главного окна Visual LISP расположены пункты главного меню. Нижняя строка главного окна Visгal LISP – строка состояние системы, в которой дается краткое описание функции команды.

Главное меню Visual LISP.

Главное меню представляет собой систему, которая обеспечивает доступ ко всем средствам Visual LISP. По своей сути главное меню – основной управляющий центр интегрированной среды Visual LISP. Роль дополнительных центров играют панели инструментов и отдельные кнопки, за которыми закреплены команды, используемые наиболее часто.

Система меню Visual LISP – это хорошо скоординированная совокупность падающих и всплывающих меню. После щелчка мышкой по любому пункту главного меню или нажатия горячих клавиш (Hot Keys) на экране появляется соответствующее падающее меню. Горячая клавиша выделяется в названии пункта меню путем подчеркивания одной буквы. Для того чтобы с помощью клавиатуры получить быстрый доступ к пункту главной меню, а значит, и к соответствующему падающему меню, необходимо нажать клавишу Alt и, удерживая ее, нажать ту алфавитную клавишу, название которой подчеркнуто. Например, для быстрого обращения к пункту View (просмотр) достаточно нажать комбинацию клавиш Alt+V. Чтобы вызвать соседнее падающее меню, необходимо нажать клавишу со стрелкой влево или вправо. Выделить любой пункт падающего или всплывающего меню (подменю) можно, щелкнув по нему мышкой или нажав клавишу со стрелкой вниз либо вверх. Для выполнения выбранной команды необходимо нажать клавишу Enter или горячую клавишу, название которой подчеркнуто. Чтобы закрыть падающее или всплывающее меню, достаточно нажать клавишу Esc или щелкнуть мышкой в поле окна вне меню.

Панели инструментов Visual LISP.

Для облегчения работы со средой Visual LISP можно вывести на экран инструментальные панели (см. рис. 3.4). Вывести или отключить требуемые панели инструментов можно с помощью пункта Toolbars (панель инструментов) падающего меню View (просмотр), который вызывает диалоговое окно выбора панелей инструментов (см. рис. 3.5).

Рис.3.4 Вызов инструментальных панелей

Рис.3.5 Диалоговое окно выбора панелей инструментов

Диалоговое окно обеспечивает управление отображением на экране следующих панелей инструментов Standard (Стандартная), Search (Поиск), Tools (Инструменты), Debug (Отладка), View(Просмотр). Для того чтобы вывести ту или иную панель на экран, необходимо щелчком мышки включить\выключить соответствующие флажки, после чего нажать кнопку Apply (применить). Если щелкнуть по кнопке Show all (показать все), в главном окне Visual LISP появятся все инструментальные панели.

Для удаления инструментальных панелей из главного окна Visual LISP необходимо нажать кнопку Hide all (скрыть все), а затем кнопку Close (закрыть).

При перемещении указателя мышки по значкам (пиктограммам) инструментальных панелей высвечивается назначение каждой кнопки панели, а в строке состояния в самом низу главного окна Visual LISP появляется более подробное объяснение. С каждой кнопкой связан определенный пункт меню, а рисунок на этой кнопке передает суть этого пункта меню. Вызывать пункт меню с помощью кнопки гораздо быстрее, чем выбирать меню.

Панель инструментов просмотра View.

Панель инструментов просмотра включает восемь основных кнопок (см. рис. 3.6). На панели инструментов View (просмотр) слева направо размещаются следующие кнопки;

Рис.3.6 Панель инструментов View,

Панель инструментов Tools,

Панель инструментов отладки Debug,

Панель инструментов поиска Search

Activate AutoCAD (активизировать систему AutoCAD). Описание в строке состояний – Activate AutoCAD ( активизируется AutoCAD);

Select window (выбрать окно). Описание в строке состояний – Select: Visual LISP window from list (выбор окна Visual LISP из списка);

LISP console (выбрать консоль Auto LISP). Описание в строке состояний Activate Visual LISP console / bring console to top (активизирование Visual LISP консоли / перенесение консоли наверх);

Inspect (проверить). Описание в строке состояний - Open an inspector window and enter expression (открытие окна просмотра ввода выражения);

Trace (трассировка ошибки). Описание в строке состояний - Open the inspector window for last error trace stack (открытие окна просмотра последней ошибки трассы сетка);

Symbol service (обслужить символы). Описание в строке состояний - Activate the symbol service window (активизация окна обслуживания символов);

Apropos (найти слово по фрагменту). Описание в строке состояний – Open the apropos window for assistance on LISP expression (открытие окна поиска слова по фрагменту для помощи LISP - выражениям);

Watch window (открыть окно наблюдений). Описание в строке состояний – Open the watch window (открытие окна наблюдений).

Панель инструментов: Tools

Панель инструментов включает девять кнопок (см. рис. 3.6).

На панели инструментов Tools (инструменты) слева направо размещаются следующие кнопки;

Load activate edit window (загрузить программу из активного окна редактирования). Описание в строке состояний – Load and evaluate the code in the active editor window (загрузка и выполнение программы в активном окне редактора);

Load selection (загрузить выделенное выражение). Описание в строке состояний – Load and evaluate the selected text (загрузка и выполнение выделенного текста);

Check edit window (проверить синтаксис программы в активном окне редактирования). Описание в строке состояний – Perform syntax checking of Auto LISP code in the active editor window (выполнение синтаксической проверки программы Auto LISP в активном окне редактора);

Check selection (проверить синтаксис выделенного). Описание в строке состояния – Perform syntax checking of selected Auto LISP code in edit window (выполнение проверки синтаксиса выделенной программы Auto LISP в окне редактирования);

Format edit window (отформатировать программу в активном окне редактирования). Описание в строке состояний – Format Auto LISP code in the active editor window (форматирование программы Auto LISP в активном окне редактора);

Format selection (отформатировать выделенный фрагмент). Описание в строке состояний – Format Auto LISP code in the current selection (Форматирование программы Auto LISP в текущем выборе);

Comment block (закомментировать блок). Описание в строке состояний – Comment out the selection block of text (комментирование выбранного блока текста);

Uncomment block (раскомментировать блок). Описание в строке состояний – Uncomment the selection block of text (отмена комментариев у выбранного блока текста);

Help (помощь). Описание в строке состояний – Visual LISP Help (помощь Visual LISP).

Панель инструментов отладки: Debug

Панель инструментов отладки включает девять кнопок и один индикатор в виде кнопки (последний на панели инструментов) (см. рис. 3.6).

На индикаторе изображены круглые скобки и положение курсора. На индикаторе курсор может стоять перед круглыми скобками; это означает, что процесс отладки остановлен перед выражением Stopped before (остановлен перед) или после – Stopped after (остановлен после).

На панели инструментов Debug (отладка) слева направо размещаются следующие кнопки:

Step into (шагнуть внутрь выражения). Описание в строке состояний – step into the nested expression (шагнуть внутрь выраженного выражения);

Step over (шагнуть с обходом). Описание в строке состояний – step over the next expression (шагнуть до следующего выражения);

Step out (шагнуть вне выражения). Описание в строке состояний – step out the end the current function (шагнуть вне к концу текущей функции);

Continue (продолжить отладку). Описание в строке состояний – continue to the next breakpoint or to the end (продолжить до следующей точки прерывания или до конца);

Quit (выйти из текущего уровня отладки). Описание в строке состояний (внизу окна) - quit the current debug level (выход из текущего уровня отладки);

Reset (вернуться на верхний уровень). Описание в строке состояний - reset to the top level (вернуться на верхний уровень);

Toggle breakpoint (установить/удалить точку прерывания). Описание в строке состояний - add or remove a breakpoint at the current location (добавление или удаление точек прерываний в текущем положении);

Add watch (добавить выражение для просмотра). Описание в строке состояний - add an expression to watch (добавить выражение для просмотра);

Last break (последнее прерывание). Описание в строке состояний - show last break source (показать источник последнего прерывания).

Панель инструментов поиска: Search

панель инструментов поиска включает семь кнопок и раскрывающийся список с текстовым полем (см. рис. 3.6).

В текстовом поле раскрывающегося списка вводятся символы для поиска их в активном окне текстового редактора или окне консоли. Щелчком по стрелке, направленной вниз, можно раскрыть список и выбрать в нем ранее введенные символы.

На панели инструментов Search (поиск) слева направо размещаются следующие кнопки:

Find (найти). Описание в строке состояний - Search for text (поиск текста). Точнее, поиск введенного текста в текстовом поле диалогового окна Find, которое появляется после щелчка по кнопке Find (найти);

Replace (заменить). Описание в строке состояний - search for text replace it with new text (поиск введенного текста и замена его на новый текст);

Find toolbars string (найти строку текстового поля). Описание в строке состояний - find the current string in the toolbars (найти текущую строку текстового поля);

Toggle bookmark (установить/удалить закладку). Описание в строке состояний - add/remove a bookmark at the current position (добавление/удаление закладки на текущей позиции);

Next bookmark (перейти к следующей закладке). Описание в строке состояний - move to the next bookmark (перейти к следующей закладке);

Previous bookmark (перейти к предыдущей закладке). описание в строке состояний - move to the previous bookmark (перейти к предыдущей закладке);

Clear all bookmark (удалить все закладки). Описание в строке состояний - clear all bookmark (удалить се закладки).

Информация, отображаемая в строке состояния (в самом низу главного окна Visual LISP), изменяется в зависимости от того, какое действие в настоящий момент вы выполняете в visual LISP.

Обратите внимание на минимизированное окно поиска нескольких символов. При запуске это окно информирует о текущем состоянии visual LISP. Кроме того, оно может содержать дополнительную информацию, например об ошибках Visual LISP во время запуска.

 

 

3.4. Изучение основ программирования с использованием интегрированной среды Visual LISP

Auto LISP - один из диалектов программирования высокого уровня COMMON LISP (1986). LISP был создан как язык функционального программирования и относится к языкам декларативного типа.

Представленная на (рис. 3.1) классификация несколько условна, поскольку почти каждый язык содержит те или иные элементы другого языка. Со временем языки взаимно дополняют и обогащают друг друга.

Рис.3.1 Классификация языков программирования

Название языка LISP происходит от начальных букв двух слов LISting Processing (Обработка списков).

Список - это упорядоченная, заключенная в круглые скобки последовательность, элементами которой могут быть: числовые константы (числа целые и вещественные); текстовые константы; логические (Т - истина, NIL - ложь); идентификаторы (имена переменной функции, аргумента); список. Список будем записывать с апострофом перед открывающей круглой скобкой. Например:

'(15 12,14 "Текстовая константа" '(A B С)PI)

Таким образом, список в общем виде - это многоуровневая, иерархическая структура данных, в которой открывающие и закрывающие круглые скобки находятся в строгом соответствии.

Список, в котором нет ни одного элемента, называется пустым и обозначается '() или именем NIL. Список в Auto LISP заключается в круглые скобки, а элементы списка разделяются пробелами.

Выражение - это список, в котором первым элементом является имя функции. Любая функция Auto LISP состоит из выражений и сама является выражением. Выражение в Auto LISP имеет вид:

(<имя функции>[<аргумент1>] [<аргумент2>] [<>]...)

Квадратные скобки означают, что элемент может быть в списке, а может и не быть.

Аргументы (параметры) - это средство передачи значений (данных) в функцию. Аргументами могут быть переменные, константы (числовые, текстовые, логические) или выражения. Число аргументов функции может быть переменными, фиксированным или нулевым.

Переменные - это элементы языка Auto LISP, предназначенные для представления различных элементов языка Auto LISP и не имеющие постоянного значения.

Константы - это элементы языка Auto LISP, предназначенные для представления самих себя, имеющие постоянные значения.

Константы языка Auto LISP могут быть трех видов: числовые (целые и вещественные); текстовые (строковые) и логические.

Числовые константы - это любая последовательность цифр со знаком или без знака, отделяемая или неотделяемая точкой. Знак точки не должен стоять в начале и в конце числа.

Текстовые константы - это любая последовательность знаков и пробелов, взятых в кавычки.

Логические константы - это Т (True - истина, Nil - ложь).

Символы (идентификаторы) - это имя (имена переменной, функции, аргумента), состоящие из прописных или строчных букв, цифр и знаков за исключением () - круглых скобок, - точки, ' - апострофа, " - кавычек, ; - точки с запятой. Изначально у символов нет никакого значения.

В интерпретаторе прописные и строчные буквы отождествляются и представляются прописными.

Единственный вид операций над данными в AutoCAD - это вычисление функций. Перед вычислением все переменные, аргументы и вызовы функций заменяются на свои значения.

В Auto LISP можно выделить три вида функций: встроенные в язык, разработанные и описанные пользователем, а также функции, разработанные и описанные другими пользователями.

Для создания новых функций в Auto LISP имеется специальная функция (Defun... ). При разработке функций в Auto LISP широко используется мощный метод рекурсии, то есть при определенной функции эта функция может вызывать саму себя.

Рассмотрим этот метод на примере вычисления показательной функции с целыми положительным коэффициентом.

Показательную функцию можно представить как функцию двух аргументов: Y(A,N)=An. Эту же функцию можно представить и в другом виде:

Y(A,N)-A*Y(A,N-1)=A*An-1=An

В языке Auto LISP эту функцию можно определить с помощью встроенной функции под именем Defun (Definition FUNction - определение функции) с использованием рекурсии:

(DEFUN POC (AN) ; показательная функция с положительным

(IF(=N1)A ; показателем степени

(*A(POC A(-N1))))

)

(POC 54) ; вызвать функции после ее описания

Имя функции пишется в инфиксной форме (сначала имя функции, затем в круглых скобках аргументы). При использовании функции для вычислений она пишется в префиксной форме. Имя функции и аргументы заключены в круглые скобки.

Основные этапы программирования на Auto LISP.

Постановка задачи. На этом этапе определяется: графический объект, который может формироваться программой при различной входной информации.

Выявление основных особенностей, взаимосвязей и количественных закономерностей. На этом этапе устанавливаются взаимосвязи отдельных элементов чертежа с точки зрения эффективного их построения. Одновременно определяются способы построения отдельных элементов графического объекта и условия, которые влияют на выбор способа построения элемента. Проводится декомпозиция сложного графического объекта на ряд элементарных, описание которых может быть выполнено простыми встроенными функциями. Определяются постоянные и переменные параметры, текстовые вставки, формируются запросы и сообщения, программно выдаваемые конструктору и т.д.

Разработка последовательности действий создания графического изображения объекта. На этом этапе подробно излагаются все действия, связанные с построением графического изображения объекта, возможно использование циклических процедур. Указывается, какая входная информация необходима, как она используется для формирования изображения того или иного элемента объекта.

Разработка программы (функций) Auto LISP. В языке функционального программирования каждое действие, каждая операция описываются некоторой функцией или комбинацией функций, встроенных или построенных пользователями. Каждая функция имеет свое оригинальное имя, она может иметь один или несколько аргументов либо не иметь их. Аргументы функции могут быть тоже функциями.

Встроенные функции языка Auto LISP

По назначению все встроенные функции языка Auto LISP условно можно разделить на следующие:

ввода данных различного типа;

манипулирования с данными;

работы с числовыми данными;

управления процессом вычисления (выполнения) функций;

проверки выполнения условий;

вывода данных различного типа;

доступа к примитивам и средствам AutoCAD;

особые.

Рассмотрим синтаксис основных встроенных функций языка Auto LISP, которые могут быть использованы в процессе разработки пользователем собственных функций.

Функции для ввода данных различного типа.

(PROMPT <"поясняющее сообщение"> - ввод сообщения;

(PROMPT "введите основные данные задачи")

введите основные данные задачи

(GETINT<"поясняющее сообщение"> - ввод целого числа;

(GETINT"\n введите число этапов решения"

введите число этапов решения 3; ввод целого числа

(GETREAL<"поясняющее сообщение"> - ввод действительного числа;

(GETREAL"\n продолжительность операции"

продолжительность операции 15.5 ; ввод действительного числа

(GETSTRING [<СК>] [<"поясняющее сообщение">] - ожидание ввода строки с пробелами, если есть <СК>, иначе ввод строки до 1-го пробела;

(GETSTRING "\n введите фамилию:") ; вызов функции

введите фамилию: Кудрявцев ; ввод фамилии на запрос.

Функции для манипулирования с данными.

(SETQ<переменная> <выражение> - присвоение переменной значения выражения (атом, список, функция,...);

(SETQ А10 ; присвоение переменной А значение 10

В "ABS" ; присвоение В текстовой константы "ABS"

C (COS 0,6)) ; присвоение С значения (COS 0,6))

или

(SETQ A 10 B "ABS" C (COS 0,6)) ; вызов функции

(SET <'символ> <выражение>) - присвоение символу с апострофом значения выражения (атом, список, функция,...);

(SET 'A 10) ; присваивает символу 'A значение

10 ; результат

(LIST <элемент> <элемент>...) - создание списка из элементов;

(LIST 'A 'B 'C 'D 'E) ; вызов функции

(A B С D E ) ; результат - список элементов

(FIX <действительное число>) - преобразование действительного числа в целое;

(FIX 5,4) ; вызов функции

5 ; результат выполнения - целое число

(FLOAT <целое число>) - преобразование целого числа в действительно;

(FLOAT 5) ; вызов функции

5.0 ; результат выполнения - действительное число

(ATOF <"число">) - преобразование числовой текстовой константы в действительное число;

(ATOF "55.2") ; вызов функции

55.20000 ; результат выполнения

(ATOI <"число">) - преобразование числовой текстовой константы в целое число;

(ATOI "34") ; вызов функции

34 ; результат выполнения

Функции для работы с числовыми данными и выражениями.

(+ <N1> <N2> <N3>...) - сложение чисел N1, N2, N3...

(+ 12.3 45 3.6 1) ; вызов функции

61.9 ; результат сложения нескольких чисел

(- <N1> <N2> <N3>...) - вычитание из числа N1 чисел N2, N3,...

(- 50.5 45.1 3 2.3) ; вызов функции

0.1 ; результат вычитания нескольких чисел

(* <N1> <N2> <N3>...) - перемножение чисел N1, N2, N3,...;
(* 3.3 4 5 2) ; вызов функции

132.0 ; результат умножения нескольких чисел

(/ <N1> <N2> <N3...) - деление числа N1 на N2, N3,...;
(/ 70 5.5 2). ; вызов функции

6.36364 ; результат деления

(ABS <N1>) - определение абсолютного значения числа N1;
(ABS -55.4) ; вызов функции

55.4 ; результат определения абсолютного числа

(1+ <N1>) - добавление к числу N1 единицы;

(1+ 15). ; вызов функции

16 ; результат выполнения

(1- <N1>) - вычитание из числа N1 единицы;

(1- 43) ; вызов функции

42 ; результат выполнения

(SIN <угол в радианах>) - вычисление синуса угла в радианах;
(SIN 0.54) ; вызов функции;

0.514136 ; результат вычисления синуса

(COS <угол в радианах>) - вычисление косинуса угла в радианах:
(COS 1.4) ; вызов функции

0.169967 ; результат вычисления косинуса

(ATAN <N>) - определение угла в радианах (арктангенс);
(ATAN 45) ; вызов функции

1.54858 ; результат вычисления арктангенса

(EXP <N>) - определение величины экспоненты;
(ЕХР 2) ; вызов функции

7.38906 ; результат вычисления экспоненты

(ЕХРТ <N1> <N2>) - определение показательной функции;
(ЕХРТ 6.52.3) ; вызов функции
74.08 ; результат вычисления

(LOG <N>) - определение величины натурального логарифма; (LOG 68.7) ; вызов функции

4.22975 ; результат вычисления

(MAX <N1> <N2>...) - поиск максимального числа из всех;

(МАХ 3 9 5.5 4.5) ; вызов функции

9.0 ; результат - максимальное число из всех

(MIN <N1> <N2>...) - поиск минимального числа из всех;
(MTN 5 4.1 2.2 7) ; вызов функции
2.2 ; результат - минимальное число из всех

(ANGLE<T1> <T2>) - определение угла в радианах между прямой,

проходящей через Т1 и Т2, и осью X;
(ANGLE '(2.0 3.0) '(8.0 9.0)); вызов функции
0.785398 ; результат вычисления - угол в радианах

(DISTANCE <Т1> <T2>) - расстояние между точками Т1 и Т2;
(DISTANCE '(8.0 3.0) '(2.0 6.0)) ; вызов функции.
6.7082 ; результат - расстояние между ; точками Т1 и Т2

(INTERS <Т1> <Т2> <ТЗ> <Т4> [<ON>]) - определение точки пересечения
двух отрезков, проходящих соответственно через точки ТІ, Т2 и ТЗ, Т4.
Если <ON> нет, то точка пересечения должна быть в пределах обоих
отрезков, иначе отрезки воспринимаются как бесконечные прямые;
(INTERS '(1 1) '(5 5) '(1 5) '(5 1)) ; вызов функции
(3.0 3.0) ; результат - точка

; пересечения отрезков

(POLAR <Т1> <U> <R>) - определение точки Т2 путем перемещения из
точки <Т1> под углом <U> в радианах на расстояние <R>;
(POLAR '(1 1) (/ PI 4)4) ; вызов функции

(3.82843 3.82843) ; результат - координаты точки

 

Функции управления процессам вычисления (выполнения) функций.

(COND (<(условие 1)> <(функция 1,1 )> [(функция 1,2)]...)

(<(условие N)> <( функция N,l)> [(функция N,2)]...))

- вычисление тех функций, для которых выполняются условия. Проверка проводится для всех условий.

(SETQ I 5 J 9) ; присваивание значений переменным I и J

(COND ((= I J) (MAX 5 10 3)); определение максимального числа

((< I J) (МIN 5 6 20)) ; определение минимального числа

((> I J) (* 5 7 7.8 9)));определение произведения чисел
5 ; результат выполнения (вычисления)

(IF (<(условие 1)> <(функция 1)> [(функция 2)]) - если (условие 1) выполняется, то вычисляется (функция 1), иначе (функция 2);

(SETQ I 5 )

(IF (=10) (МАХ 5 10 3) ; определение максимального числа
(MIN 5 6 20)) определение минимального числа
5 ; результат выполнения (вычисления)

(REPEAT <целое число> <выражение>...) -вычисление выражений

заданное число paз;

(SETQ D 5)

(REPEAT 3 ; формирует цикл

(SETQ D (* D 2))) ; присваиваются D результаты расчета

40 ; результат расчета

(WHILE <(условие)> <(функция 1)> <(функция 2)>...)-вычисление в

цикле функций до тех пор, пока выполняется условие;

(SETQ N 1) ; определение начального значения N

(WHILE (< N 4) ,условие вычисления в цикле

(PRINT (SIN (* 0.2 N))) ; вычисление SIN, печать результата

(SETQ N (+ N 1))) ; определение нового значения N

0.198669 ; результаты расчета

0.389418

0.564642

Функции проверки выполнения условий.

(AND <выражение>...) - Т (TRUE), если нет NIL, иначе NIL;
(AND 10 15.5 "ABC") ;вызов функции
Т ; результат выполнения

(OR <выражение>...) - Т, если хотя бы одно Т, иначе NIL;
(OR NILL "CAD" 15) ;вызов функции
T ; результат выполнения

(NOT <выражение>...) - Т, если имеется NIL, иначе NIL;
(SETQ A 15.8)
(NOT А) ; вызов функции

NILL ; результат выполнения

(EQUAL <выражение1> <выражение2> [<допуск>]) - Т, если оба выражения равны между собой, иначе NIL;

(EQUAL "АТОМ1" "АТОМI") ; вызов функции

Т ; результат выполнения

(EQ <выражеиие1> <выражеиие2>) - Т, ели идентичны, иначе NIL;
(SETQ E1 '(Х У Z) E2 '(X Y Z))
(EQ EІ Е2) ; вызов функции

NILL, ; результат выполнения

(/= <атом1> <атом2>...) - Т, если <атом1> не равен остальным атомам

иначе NIL;
(/= 7,85 7,74) ;вызов функции

Т ;результат выполнении

(< <атом1 > <атом2>...) - Т, если <атом1> меньше всех последующих,

иначе NIL;
(< "А" "D'') ;вызов функции

Т ;результат выполнения

(<= <атом1> <атом2>...) - Т, если <атом1> меньше или равен всем последующим, иначе NIL;

(= <атом 1 > <атом2>...)- T, если <атом 1> равен всем остальным атомам, иначе NIL.

Функции для вывода данных различном типа.

(WRITE-LINE <текст>) - печатание текста без кавычек;

(PRINC <выражение>) - печатание и возвращение значения <выражения>; если это текст, то без кавычек;

(PRINT <выражение>) - печатание с новой строки с последующим пробелом и возвращение значения выражения, текст без кавычек;

(PRINT ''HELLOW") ; вызов функции

HELLOW ; результат выполнения

(WRITE-LINE<текст> <F1>) - печатание текста в файл <F1> без кавычек, а возвращение в кавычках;

(SETQ F1 (OPEN "C:\\AUTOCAD\\LISP\\WR.LSP" а")) (WRITE-LINE "ХОРОШЕЕ НАЧАЛО" F1)

(PRINC <выражение> <F1>) - печатание в файл <F1> и возвращение

значения <выражения>, текст без кавычек;

(PRINC "ПРИВЕТ ВСЕМ ПОЛЬЗОВАТЕЛЯМ'' F1)

(PRINT <выражение> <F1>) - печатание в файл <F1> и возвращение значения выражения, текст без кавычек.

Особые функции

(QUOTE <выражение>) - блокировка вычисления выражения:
(QUOTE (А В С D)) ; вызов функции
(А В С D) ; результат выполнения функции

' <выражение> - блокировка вычисления выражения;

' (А В С D Е) ; вызов функции

(А В С D Е) ; результат выполнения

(EVAL <выражение>) - вычисление любого, правильно составленного выражения (обычно присутствует неявно).

Например, выражения (EVAL (ABS -3.5)) и (ABS -3.5) равносильны;

(DEFUN <имя функции> ([<список аргументов>...] [/<локальная
переменная>]) <выражение>...) - определение новой функции: имя
функции - это любая последовательность символов; список аргументов -
это список переменных, значения которых должны быть определены до
выполнения функции; локальные переменные - это переменные действие
которых ограничено данной функцией. Значением функции является
значение последнего выполняемого выражения. Память под локальные
переменные выделяется только во время вычисления функции;
(DEFUN SIN2 (X) ; функция под именем SIN2

(* (SIN X) (SIN X))) ; вычисляет SIN в квадрате
(LAMBDA <аргумент> <выражение>...) - определение функции без имени;
(APPLY’(LAMBDA (X Y) (+(* Y Y)))’ (5 3))
34 ; результат выполнения функции без имени

(LOAD <"имя файла">) - функция загрузки файла и выполнения его, имя файла без расширения (подразумевается расширение LSP);

(LOAD "C:\\ALISP\\VAL1")

(TRACE <имя функций>...) - выдача результатов выполнения функций.

Дополнительные функции языка Auto LISP

(COMMAND [команды AutoCAD и их параметры]...) - выполняет заданные команды AutoCAD;

Строка пустого указателя ("") эквивалентна нажатию клавиши Enter на клавиатуре. Вызов функции (COMMAND...) без параметров эквивалентен нажатию клавиши Esc и отменяет большинство команд AutoCAD.

Функция (COMMAND...) оценивает каждый аргумент и посылает его с AutoCAD в ответ на последовательные подсказки.

(SETQ РТ1 ‘(23) РТ2 ‘(78))

(COMMAND "LINE" PT1 PT2 "")

В результате будет изображена линия от точки с координатами (2,3) до точки (7,8).

Функции доступа к примитивам и средствам AutoСAD

Графический примитив точка

Точка может быть задана несколькими способами:

1. Абсолютными координатами:

(COMMAND "POINT" "10, 12")

(SETQ T1 (GETPOINT "\n Введите координаты точки T1")) 10,12

(COMMAND "POINT" T1)

(SETQ X (GETPOINT "\n Введите координату Х точки Т1”) 10

Y (GETPOINT "\n Введите координату Y точки T1)) 12

(COMMAND "POINT" ‘(X Y) )

(SETQ X 10.0

Y 12,0)

(COMMAND "POINT" ' (X Y))

(SETQ T1’(X Y))

(COMMAND "POINT" T1)

(SETQ T1(LIST X Y))

(COMMAND "POINT" T1)

(SETQ T1 (LIST 10.0 12.0))

(COMMAND "POINT" T1);

2. Относительными координатами:

(SETQ T1 (GETPOINT "\n Введите координаты точки T1")) 10,12

(SETQ T2 (GETPOINT "\n Введите координаты T2 относит. T1")) @5,3;

3. Полярными координатами:

(SETQ U PI

R 100

Т2 (POLAR T1 U R))

или

(SETQ Т2 (POLAR T1 PI 100));

4. Привязкой к характерным точкам примитива:
(OSNAP <исходная точка> <режим - привязки>)
Основные способы привязки:

(OSNAP T1 "NEA") - ближайшая (NEAREST) точка на примитиве;

(OSNAP T1 "END") - конечная (ENDPOINT) точка линии или дуги;

(OSNAP T1 "MID") - средняя (MIDDLE) точка линии или дуги;

(OSNAP T1 "CEN") - центр (CENTER) дуги или окружности;

(OSNAP T1 "NOD") - ближайшая точка (вершина) (NODE):

(OSNAP T1 "QUA") - ближайшая точка, лежащая на оси квадранта по дуге и окружности (0, 90, 180, 270°);

(OSNAP T1 "INT") - точка пересечения (INTER-SECTION) двух примитивов (линий, дуг, окружностей);

(OSNAP Т1 "INS") - точка вставки (INSERT) текста, блока;

(OSNAP T1 "PER") - точка опускания перпендикуляра на примитив;

(OSNAP T1 "TAN") - точка касания касательной к дуге или окружности;

(OSNAP T1 "NON") - отмена объектной привязки (NONE):

(OSNAP T1 "QUICK") - быстрый (QUICK) способ выбора объекта привязки.

Через запятую можно задать несколько режимов привязки. Приоритет действия привязки соответствует перечисленным выше.

Графический примитив отрезок

(COMMAND "LINE" T1 Т2 "Ключ") - создание отрезка по двум точкам.

Ключи: "С" (Close) - замыкает ломаную;

"U" (Undo) - отменяет последний отрезок;

"" - завершает создание отрезка. Например,

(COMMAND "LINE" T1 Т2 ТЗ "С") – создание треугольника.

Графический примитив окружность

(COMMAND "CIRCLE" "Ключ" T1...) - создание окружности.

Если ключа нет - чертит окружность по центру и радиусу;

“2Р" - чертит окружность по двум точкам на диаметре;

"ЗР" - по трем точкам на окружности;

"TTR" - (TANGENT' TANGENT RADIUS) - чертит окружность, касающуюся двух

примитивов и имеющую радиус R;

(COMMAND "CIRCLE" ТС R) - по центру ТС и радиусу R;

(COMMAND "CIRCLE" "2Р" T1 Т2) - по двум точкам T1 и Т2 на диаметре;

(COMMAND "CIRCLE" "ЗР" T1 Т2 ТЗ) - по трем точкам на окружности;

(COMMAND "CIRCLE" "TTR" PI P2 R) - обеспечивает касание двух примитивов PI Р2 и имеет радиус R.

Графический примитив дуга

(COMMAND "ARC"...) - создает дугу и имеет ключи:

"С" - (Centre) - центр дуги;

"L" - (Length) - длина хорды;

“S" - (Start) - начальная точка;

"R" - (Radius) - радиус дуги;

"Е" - (End) - конечная точка;

"D" - (Direction) – направление;

"А" - (Angle) - центральный угол.

Примеры изображения дуги:

(COMMAND "ARC" T1 Т2 ТЗ) - изображение дуги по трем точкам;

(COMMAND "ARC" T1 "С" ТС Т2)-по двум точкам T1, Т2 и центру ТС; (COMMAND "ARC" T1 "С" ТС "A" U) - по точке, центру ТС и углу U;

(COMMAND "ARC" T1 "С" ТС "L" L) - по точке, центру ТС и хорде L;

(COMMAND "ARC” T1 "Е" Т2 "R" R) - по точкам Т1, Т2 и радиусу R;

(COMMAND "ARC" T1”E” Т2 “ U” U) - по Двум точкам и центру углу U; (COMMAND "ARC” T1 "E” Т2 “D” U) - по двум точкам и направлению U; (COMMAND "ARC "С" ТС "S” Т1 "Е" Т2) - по центру и двум точкам;

(COMMAND "ARC "С" ТС "S” T1 "A" U) - по центру, точке и углу U;

(COMMAND "ARC" "С" ТС "S" T1 "L" L) - по центру, точке и хорде L; (COMMAND "ARC" "CONTIN" Т2) - продолжение линии или дуги в точку Т2.

Графический примитив полилиния

(COMMAND "PLINE"...) - изображение последовательности прямолинейных и дуговых сегментов с возможностью указания ширины.

Ключи:

для измерения ширины:

"H" (Half-width) - полуширина;

"W" (Width) - ширина;

в режиме создания линий:

"A" (Arc) - переход в режим дуг;

"С" (Close) - замыкание линии;

"U" (Undo) - отмена последнего сегмента;

"L" (Length) - длина сегмента;

в режиме создания дуг:

"A" (Angle) - центральный угол, градусы;

"CE" (CEnter) - центр дуги;

"CL" (CLose) - замыкание дугой;

"D" (Direction) - направление по касательной;

"L" (Line) - переход в режим линий;

"L" (Length) - длина хорды;

"R" (Radius) - радиус дуги;

"S" (Second Р.) - вторая точка.

Например,

(COMMAND "PLINE" T1 "W" 0.5 0.5 Т2 ТЗ

"А" Т4 "LINE" Т5 Т6 "А" Т7"").

Графический примитив многоугольник

(COMMAND "POLIGON"...) - построение прямоугольника с ключами:

"Е" (EDGE) - сторона; "С" - описывающий многоугольник; "I" - вписанный многоугольник;

(COMMAND "POLIGON" "N" "E" T1Т2) - по числу сторон N и двум точкам, лежащим на концах стороны;

(COMMAND "POLIGON" N "С" ТС "I" R) - по числу сторон N, центру ТС и радиусу вписанной окружности R;

(COMMAND "POLIGON" N" "C" ТС "С" R) - по числу сторон N, центру ТС и радиусу описывающей окружности R.

Графический примитив текст

(COMMAND "TEXT"...) - представление текста на чертеже;

(COMMAND "TEXT" "A" T1 Т2 "...") - вписывание текста между двумя точками Т1 и Т2;

(COMMAND "TEXT" "F" T1 T2 "H" Н "...") - ввод текста по двум точкам и высоте Н;

(COMMAND "TEXT" '"С" ТС "R" U "Н" Н "...") - ввод текста по центральной точке (Center) ТС, углу поворота U и высоте букв Н;

(COMMAND "TEXT" "М" ТС "R" U "Н" Н "...") - ввод текста по середине (MIDDLE) с углом поворота U и высоте шрифта Н;

(COMMAND "TEXT" "R" Т2 "R" U " Н" H "...") -ввод текста с выравниванием по правому (RIGHT) краю Т2, углу поворота U и высоте шрифта Н;

(COMMAND "TEXT" T1"R" U "Н" Н "...") - ввод текста по начальной точке Т1, углу поворота U и высоте шрифта Н;

(COMMAND "DTEXT"...) - ввод нескольких строк текста. Ключи и способы ввода текста аналогичны команде "ТЕХТ".

В качестве графического примитива в AutoCAD может выступать блок.

Блок может содержать любое количество графических примитивов любого типа, а восприниматься AutoCAD как один графический примитив. Для создания блока (только в текущем чертеже) используется команда "BLOCK". Для создания блоков, которыми можно воспользоваться при построении любых чертежей, достаточно выбрать команду "WBLOCK". Эта команда служит для записи блока в отдельный файл с заданным именем и имеет расширение DWG.

Рассмотрим примеры создания блока выбранных объектов:

(COMMAND "BLOCK" <имя блока> <базовая точка блока> <выбор объектов> "")

(COMMAND "BLOCK BL5 BT5 L4 CR2 AR "").

Запись блока в файл:

(COMMAND "WBLOCK F1 BL5).

Включение блока в текущий чертеж производится при помощи команды "INSERT" (Вставить), которая в общем виде выглядит так:

(COMMAND "INSERT" <имя блока> <базовая точка вставки> <масштаб по оси Х> <масштаб по оси Y> <угол поворота>).

Например,

(COMMAND "INSERT" BL5 ВТ1 1 1 U).

Графический редактор AutoCAD позволяет создавать чертежи, которые представляют собой «многослойный пирог». Например, на первом слое дается чертеж без размеров, на втором - только размеры к данному чертежу, на третьем - штриховка к отдельным его элементам. При необходимости слои можно накладывать друг на друга в любом сочетании, удалив ненужные.

Для реализации многослойного изображения чертежа используется команда "LAYER", которая имеет следующие ключи:

"М" (Make - сделай) - создает слой и делает его текущим;

"S" (Set - установи) - делает слой текущим;

"ON" (ON - включи) - делает слой видимым;

"OFF" (OFF - отключи) - делает слой невидимым;

"С" (Color - цвет) - определяет цвет слоя;

"N" (New - новый) - создает новый слой;

"L" (Ltype - тип линии) - определяет тип линии;

"?" - выводит список созданных слоев.

Ключ "С" (Color - цвет) может использовать следующие цвета: "R" (Red - красный), "Y" (Yellow - желтый), "G" (Green - зеленый), "С" (Cyanic - голубой), "В" (Blue - синий), "М" (Magenta - розовый), "W" (White - белый).

Ключ "L" (Linetype- тип линии) может использовать следующие режимы;

"S" (Set - установи) - текущий тип линии: "CONTINUOUS" - непрерывный; "DASHED" - пунктирный; "DASHDOT" -штрихпунктирный;

"R" (Read - просмотр) - просмотр типов линий;

"C" (Create - создание) - создание нового типа линий;

"L" (Load - загрузка) - использование нового типа линии.

Например, (COMMAND "LAYER" "М" "L" "DASHDOT" "").

При использовании команд построения графических примитивов часто применяют команды: "ZOOM"; "UCS".

"" (Покажи) - изменяет размер, а также местоположение чертежа на экране и имеет следующие ключи:

"С" (Center- центр) - изображение чертежа по центру;

"D" (Dynamic- динамический) - изображение динамическим окном;

"L" (Left- левый) - задание левого нижнего угла чертежа с изменением масштаба;

"Р" (Previous - предыдущий) - предыдущий режим изображения;
"W" (Window - окно) - изображение окном с угловыми точками.
Например, (COMMAND "ZOOM" "L" T1 M"").

"UCS" (User Coordinate System) - система координат пользователя, которая имеет следующие ключи:

"О" (Origin - начало) - параллельный перенос координат;

"Z" (Z - ось) - поворот вокруг оси Z на заданный угол;

"S" (Save - сохрани) - сохранение текущей системы координат под некоторым именем.

Например, (COMMAND "UCS" "S" IM1).

"R" (Restore - восстанови) - восстановление под заданным именем;

"W" (World - мир) - переход в абсолютную систему "WCS" - World Coordinate System.

 

3.5. Создание фрагментов системы обработки информации

Преобразование алгебраических выражений

Рассмотрим основные этапы создания системы преобразования алгебраических выражений. Напомним, что алгебраическое выражение, составленное из букв (символов) и чисел, соединенных знаками действий сложения, вычитания, умножения, деления, возведения в степень и извлечения корня (показатели степени и корня должны быть постоянными числами). Если некоторые из букв (или все) считать переменными, то алгебраическое выражение есть алгебраическая функция.

Постановка задачи.

Разработать фрагменты системы для автоматизации обработки алгебраических выражений, представленных в виде символов и чисел. Исходные и конечные выражения должны быть представлены в обычном для пользователя виде (в инфиксной форме). В процессе вычислений необходимо предусмотреть упрощение алгебраических выражений, использование в алгебраических выражениях, кроме операций сложения, вычитания, умножения и деления, операций возведения в целую степень и дифференцирования.

Разработка алгоритмов и комплекса функций для преобразования аналитических выражений.

Рассмотрим вначале алгоритм преобразования алгебраических выражений из инфиксной формы в префиксную. Алгебраические выражения задаются, как правило, в инфиксной форме, например:

А*5+В

Язык Auto LISP работает с выражениями в префиксной форме, то есть выражения имеют следующий вид:

(* А(+ 5В))

Правила сложения выражений, представленных в виде символов и чисел:

если X - число и оно равно нулю, то сумма X и Y равна Y:

если Y - число и оно равно нулю, то сумма X и Y равна X:

если X и Y - числа, то их сумма равна (+ X Y);

если X и Y - списки, то необходимо провести вычисление их, а затем сформировать обращение к функции сложения;

если X - список, то необходимо провести вычисление его, а затем сформировать обращение к функции сложения;

если Y - список, то необходимо провести вычисление его, а затем сформировать обращение к функции сложения;

если все вышеперечисленные условия не выполняются, следует сформировать обращение к функции сложения.

Правила вычитания выражений, представленных в виде символов и чисел:

если X и У равны, то результатом вычитания будет 0;

если У - число и оно равно нулю, то результат будет равен X;

если X и У - числа, то их разность равна (- X У),

если X и У - списки, то необходимо провести вычисление их, а затем сформировать обращение к функции вычитания;

если X - список, то необходимо провести вычисление его, а затем сформировать обращение к функции вычитания;

если У - список, то необходимо провести вычисление его, а затем сформировать обращение к функции вычитания;

если все вышеперечисленные условия не выполняются, следует сформировать обращение к функции вычитания.

 

Правила умножения выражений, представленных в виде символов и чисел:

если X равен 1, то результатом умножения будет У;

если У равен 1, то результатом, умножения будет X;

если X или У - число и оно равно нулю, то результат будет равен 0;

если X и У - числа, то результат равен (* X У);

если X и У - списки и они равны, то сначала необходимо провести вычисление X, а затем сформировать обращение к функции возведения в степень;

если X и У - списки, то необходимо провести вычисление X и У, а затем сформировать обращение к функции умножения;

если X - список, следует провести его вычисление, а затем сформировать обращение к функции умножения;

если У - список, то необходимо провести его вычисление, а затем сформировать обращение к функции умножения;

если X равен У, то необходимо сформировать обращение к возведению в степень;

если все вышеперечисленные условия не выполняются, следует сформировать обращение к функции умножения.

Правша деления выражений, представленных в виде символов и чисел:

если X - число и оно равно 0, то результат деления равен 0;

если У - число и оно равно 0, то результат деления равен inf;

если У равен 1, то результатом деления будет Х;

если X и У равны, то результат равен 1;

если X и У - числа, то результат равен (/ X У);

если X и У - списки, то необходимо провести вычисление X и У, а затем сформировать обращение к функции деления;

если X - список, то необходимо провести его вычисление, а затем сформировать обращение к функции деления;

если У - список, то необходимо провести его вычисление, а затем сформировать обращение к функции деления;

если все вышеперечисленные условия не выполняются, следует сформировать обращение к функции деления.

 

Правила возведения в целую степень выражений, представленных в виде символов и чисел:

если X равен 1, то результат возведения в степень равен 1:

если У равен 1, то результат возведения в степень равен X;

если X - число и оно равно нулю, то результат будет равен 0;

если У - число и оно равно нулю то результат будет равен 1;

если X и У - числа, то результат равен (А X У);

если X и У - списки, необходимо провести их вычисление, а затем сформировать обращение к функции возведения в степень;

если X - список, необходимо провести его вычисление, а затем сформировать обращение к функции возведения в степень;

если У - список, необходимо провести его вычисление, а затем сформировать обращение к функции возведения в степень;

если все вышеперечисленные условия не выполняются, следует сформировать обращение к функции возведения в степень.

 



<== предыдущая лекция | следующая лекция ==>
Понятие об алгоритме | МАТЕМАТИЧЕСКОЕ ОЕСПЕЧЕНИЕ САПР


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.796 сек.