Лабораторная работа №8.
Тема: Программирование на AutoLISP в среде VisualLISP. Инструменты. Особенности интер-фейса. Примеры создания и использования новых функций для решения прикладных задач.
Цель: Изучить возможности, предоставляемые при программировании в среде VisualLISP; знать особенности интерфейса и применяемые инструменты; понимать смысл выдаваемых со-общений и инструкций.
Ход работы.
1. Запустить AutoCAD одним из возможных способов. Загрузить Visual LISP.
2. Ознакомиться с инструментальными средствами VisualLISP.
Visual LISP имеет ряд инструментальных средств и возможностей для облегчения разработки программ на языке AutoLISP.
При использовании Visual LISP разработка программы на языке AutoLISP включает следую-щие основные этапы:
• разработку последовательности действий решения задачи;
• разработку программы;
• форматирование программы для большей наглядности;
• поиск синтаксических ошибок в программе;
• тестирование и проверку работоспособности программы.
2.1. Окно консоли.
Ввод текста программы производится в окне консоли после подсказки _$. Развернутое окно консоли с введенной программой представлено на Рис. 1.
Рис. 1. Развернутое окно консоли Visual LISP
Следует помнить, что текст, который вводится в окне консоли Visual LISP, а также любой ре-зультат выполнения можно сохранять для дальнейшего просмотра. Кроме того, любой текст в окне можно копировать и вставлять его в ответ на подсказку или в другое приложение Windows.
Консоль системы Visual LISP во многом схожа с командным окном AutoCAD, однако распо-лагает рядом дополнительных возможностей. Ha-пример, чтобы отобразить текущее значение переменной AutoLISP в Visual LISP, достаточно напечатать имя переменной в окне консоли и нажать клавишу Enter, a чтобы просмотреть значение переменной в AutoCAD, необходимо на-печатать имя переменной с восклицательным знаком впереди (!) и также нажать клавишу Enter.
Консоль AutoLISP имеет и другие дополнительные возможности:
• ввод выражения AutoLISP в строке, которая определяется нажатием комбинации клавиш Ctrl+Enter;
• ввод больше чем одного выражения перед нажатием клавиши Enter, и Visual LISP оценит каждое выражение перед выдачей результата на консоли.
Если курсор находится в окне консоли, но не на подсказке, то после нажатия клавиши Enter курсор перемещается в подсказку.
Если вы наберете текст в окне консоли прежде, чем нажмете Enter (например, результат пре-дыдущей команды или предварительно введенного выражения), Visual LISP скопирует выбран-ный текст после подсказки.
Чтобы вернуться к предпоследнему введенному тексту в окне консоли, необходимо нажать клавишу Tab. Каждый раз после нажатия клавиши Tab ранее введенный текст заменяет текст в подсказке окна консоли. Как только процесс дойдет до первой введенной строки, он повторяет-ся снова.
Комбинация клавиш Shift+Tab действует подобно Tab, но листает входную хронологию в обратном направлении.
Клавиша Tab допускает ассоциативный поиск во входной хронологии. Например, если вы напечатаете знаки (+ в подсказке консоли и нажмете клавишу Tab, Visual LISP произведет по-иск последнего текста, который начинался с символов (+, а если такого текста нет, то, возмож-но, появится звуковой сигнал. Комбинацию клавиш Shift+Tab можно использовать для того, чтобы осуществить ассоциативный поиск от ранних до более поздних вводов.
Клавиша Esc очищает окно консоли после подсказки. Нажатие комбинации клавиш Shift+Esc оставляет ранее введенный текст, но приводит к новой подсказке без выполнения ранее введен-ного текста.
2.2. Контекстное меню.
Наиболее важные функции, необходимые при работе в окне консоли, сосредоточены в кон-текстном меню. Для быстрого вызова контекстного меню щелкните правой кнопкой мышки в любом месте окна консоли или нажмите комбинацию клавиш Shift+F10 (Рис. 2). В зависимости от позиции курсора, а также от того, имеется ли выделенный текст в окне консоли, некоторые операции могут быть неактивными.
Данное контекстное меню содержит следующие команды:
• Cut (Вырезать) — удаляет выделенный текст из окна и перемещает его в буфер;
• Сору (Копировать) — копирует выбранный текст в буфер обмена Windows (ClipBoard);
• Paste (Вставить) — вставляет содержимое буфера обмена в место расположения курсора;
• Clear Console Window (Очистить окно консоли) — очищает окно консоли;
• Find (Найти) — открывает диалоговое окно поиска задаваемого фрагмента;
• Inspect (Проверить) — открывает диалоговое окно просмотра выражения;
• Add Watch (Добавить наблюдение) — открывает диалоговое окно наблюдения выражения;
• Apropos Window (Окно поиска по фрагменту) — открывает диалоговое окно для настройки системы поиска слова по фрагменту;
• Symbol Service (Обслуживание символов) — открывает диалоговое окно обслуживания симво-лов;
• Undo (Отменить) — отменяет последнюю выполненную команду;
• Redo (Восстановить) – восстанавливает последнюю отмененную
Рис. 2. Контекстное команду;
меню окна консоли • AutoCAD Mode (Режим AutoCAD) — передает весь ввод командной
строке AutoCAD;
• Toggle Console Log (Установить/удалить файл регистрации) — открывает диалоговое окно Open Log (Открыть файл регистрации).
Примечание! Обратите внимание, что между окном консоли Visual LISP и окном командных строк AutoCAD текст можно «вырезать и вставлять». Кроме того, окно консоли Visual LISP и окно командных строк AutoCAD отличаются по способу, которым обрабатываются клавиши Space и Tab. B окне консоли Visual LISP пробел не играет никакой роли и служит только разде-лителем. Если в окне командных строк AutoCAD нажать клавишу Space не внутри выражения, это вызовет окончание ввода и обработку текста, как если бы вы нажали клавишу Enter (Ввод).
Как только вы начнете вводить текст после подсказки в окне консоли, Visual LISP определяет, чем является введенное слово – встроенной функцией AutoLISP, числом, строкой или другим элементом. Каждый тип элемента языка наделяется собственным цветом.
Если ввести имя функции в окне консоли после подсказки, то, щелкнув по кнопке Help (По-мощь) на инструментальной панели Tools (Инструменты), можно получить справку Visual LISP o функции. Это правило действует в отношении любых элементов AutoLISP, Visual LISP или функции (ACTIVEX), распознанных Visual LISP.
Можно сохранить запись всех действий в окне консоли, если зарегистрировать эти действия в Log (регистрационном) файле.
Примечание! Позже будет возможность просмотреть файл и проанализировать действия, которые выполнялись в окне консоли.
2.3. Файл регистрации.
Чтобы создать файл регистрации, выберите команду Toggle Console Log (Устано-вить/удалить файл регистрации) падающего меню File (Файл) главного меню Visual LISP. При этом окно консоли должно быть активным. На экране появится диалоговое окно Open Log (От-крыть файл регистрации) (Рис. 3).
Рис. 3 Диалоговое окно открытия файла регистрации
Выберите каталог для файла регистрации, а затем определите название файла. Если такой файл существует, на экране появится запрос о добавлении данных к уже имеющемуся файлу (Рис. 4).
Допустим, файл регистрации уже существует (Log file С:\Мои документы\dom.LOG already ex-ists). Если на вопрос Append log to existing file? (Присоединить регистрационные данные к су-ществующему файлу?) вы ответите Yes, то Visual LISP добавит информацию с консоли к теку-щему содержанию файла. В случае если вы предпочтете ответить No (Нет), Visual LISP также произведет запись в файл с этим же именем, однако первоначальное содержимое файла будет потеряно. Чтобы завершить операцию и присвоить файлу другое имя, нажмите кнопку Отмена (Cancel).
Рис. 4 Запрос о добавлении данных к существующему файлу регистрации
Для того чтобы завершить регистрацию и закрыть соответствующий файл, выберите пункт Toggle Console Log (Установить/удалить файл регистрации) из падающего меню File (Файл). По названию окиа консоли можно определить, находится ли консоль в состоянии регистрации. Ес-ли регистрация проводится, то в названии окна отражено имя файла регистрации. Когда регист-рация выключена, имя файла в названии окна консоли отсутствует.
Если вы забыли закрыть файл регистрации до выхода из Visual LISP, система сделает это ав-томатически. После закрытия файла регистрации вы можете просматривать его содержимое в любом текстовом редакторе типа Visual LISP.
2.4. Особенности среды VisualLISP.
Важно помнить, что имеется возможность непосредственного взаимодействия через окно консоли AutoLISP с AutoCAD. Чтобы включить этот режим, выберите пункт AutoCAD Mode (Режим AutoCAD) из падающего меню Tool (Инструменты) главного меню Visual LISP или об-ратитесь к пункту AutoCAD Mode (Режим AutoCAD) в контекстном меню консоли. Подсказка в окне консоли изменится на COMMAND.
Любая последовательность символов, введенная после этой подсказки, будет рассматривать-ся как командная строка AutoCAD. Таким образом, у вас появится возможность вводить коман-ды AutoCAD изнутри Visual LISP.
Рабочая среда AutoLISP отличается от рабочей среды Visual LISP.
Покажем это на следующих примерах.
_$ (SETQ X 1) ; присваивает X значение 1 в среде Visual LISP
COMMAND: (SETQ Y 2) ; присваивает Y значение 2 (включен режим AutoCAD Mode)
COMMAND: !X ; отображает значение Х в командной строке AutoCAD
_$ Y ; Y при отключенном режиме AutoCAD Mode
NIL ; результат
_$ X ; X при отключенном режиме AutoCAD Mod
1 ; результат
Чтобы вернуться к окну консоли Visual LISP, выберите пункт AutoCAD Mode (Режим Auto-CAD) так же, как вы делали это при переключении в AutoCAD. Пункт меню AutoCAD Mode (Режим AutoCAD) работает как переключатель «вкл\выкл».
Не исключено, что возникнет ситуация, когда консоль Visual LISP будет ждать ввода из AutoCAD, a AutoCAD будет полагать, что управление передано Visual LISP. B таком случае можно попробовать прервать команду AutoCAD и вернуться в Visual LISP.
Примечание! Если в окне консоли Visual LISP появится следующая подсказка:
l_$
; Entering keyboard break loop
необходимо возвратить управление AutoCAD и нажать клавишу Esc для перехода в рабочую среду Visual LISP. Чтобы возвратить управление AutoCAD, нажмите кнопку Activate AutoCAD (Активизировать AutoCAD) на инструментальной панели View (Просмотр).
После нажатия клавиши Esc в AutoCAD можно продолжать взаимодействие с консолью Visual LISP.
3. Текстовый редактор VisualLISP.
• Текстовый редактор — один из основных компонентов Visual LISP. Он прост в использовании и располагает рядом возможностей, которые упрощают процесс программирования на Auto-LISP.
К таким возможностям текстового редактора относятся:
• выделение правильных выражений AutoLISP;
• отслеживание парных круглых скобок;
• выделение цветом различных элементов программы согласно синтаксису языка;
• выполнение правильных конструкций выражения AutoLISP без выхода из окна редактора.
Большинство команд текстового редактора вызываются из строки меню; для некоторых из них, используемых наиболее часто, предназначены кнопки инструментальной панели.
Чтобы открыть новый файл в текстовом редакторе Visual LISP, выберите пункт New File (Но-вый файл) из падающего меню File (Файл). На экране появится развернутое окно текстового ре-дактора (Рис. 5).
Рис. 5 Окно текстового редактора VisualLISP
3.1. Работа с текстом.
Чтобы ввести текст программы, его следует набрать в активном окне текстового редактора. Для начала новой строки нажмите клавишу Enter.
Примечание! Текстовый редактор не переносит набранный текст на новую строку до тех пор, пока не будет нажата клавиша Enter.
Чтобы выровнять текстовую строку, введите пробелы или нажмите клавишу Tab. В послед-нем случае используйте Code Formatter (Кодовый форматер) Visual LISP, чтобы автоматически выровнять выражения в программе.
Нажатие комбинации клавиш Shift+Enter очищает конечный пробел и символы табуляции, вставляет новую строку и отступы, использующие предыдущий непустой отступ строки.
Нажатие комбинации клавиш Ctrl+Enter очищает конечный пробел и символы табуляции, вставляет символ NewLINE и выполняет «интеллектуальный» отступ.
Чтобы вставить новый текст в уже существующий, щелкните мышкой в месте вставки и нач-ните вводить текст. Место вставки можно указать также клавишами курсора.
Если вы хотите отменить только что введенный текст или последние изменения, выберите пункт Undo (Отменить) из падающего меню Edit (Редактирование) или щелкните мышкой по кнопке Undo. Команда Undo отменяет только последнее изменение.
Можно отменить также действие Undo. Для этого сразу после нажатия кнопки Undo выбери-те пункт Redo (Восстановить) из падающего меню Edit или щелкните мышкой по кнопке Redo.
3.2. Сохранение изменений.
Чтобы сохранить изменения в файле до следующего сеанса работы с Visual LISP, выберите пункт Save As (Сохранить как) из падающего меню File главного меню Visual LISP или щелкни-те мышкой по кнопке Save File (Сохранить файл) и определите путь, а также имя файла. Если вы попытаетесь выйти из Visual LISP до сохранения файла, Visual LISP спросит, сохранить ли изменения.
Visual LISP поддерживает автоматическое создание резервных копий файлов, загруженных текстовым редактором. Фактически создание резервных копий происходит, когда вы сохраняете файл впервые. Файл с резервной копией имеет то же имя, что и исходный, за исключением рас-ширения, которое включает символ подчеркивания _ и первые два символа первоначального расширения. Например, для исходного файла HOUSE1.LSP имя файла с резервной копией вы-глядит следующим образом: HOUSE1._LS.
Для того чтобы файлы с резервными копиями создавались автоматически, необходимо вы-брать пункт General Options (Общие параметры) из всплывающего меню пункта Environment Options (Параметры среды) падающего меню Tools (Инструменты). Режим автоматического создания резервной копии будет включен, если выбрать Backup the file edited on first save (Ре-зервная копия файла, впервые отредактированная, сохраняется). Данный режим используется по умолчанию.
3.3. Открытие файла.
Чтобы открыть существующий файл, выберите пункт Open File… (Открыть файл) из падаю-щего меню File (Файл) главного меню Visual LISP или щелкните по кнопке Open File (Открыть файл). На экране появится стандартное диалоговое окно Open Ше to edit/view (Открыть файл для редактирования/просмотра). Visual LISP открывает новое окно текстового редактора для файла, который вы выбираете. Открыть можно любое количество файлов, но работать можно только с одним — активным. Активное окно находится поверх остальных окон, и заголовок его отличается от них по цвету. Каждый файл Visual LISP помещает в свое отдельное окно тексто-вого редактора. Имя выбранного файла находится в поле заголовка окна текстового редактора.
Если при выходе из Visual LISP файлы остаются открытыми, то они сохраняются до следую-щего сеанса работы в Visual LISP. Когда вы в следующий раз начинаете работу в Visual LISP, он автоматически открывает эти файлы.
3.4. Идентификация элементов.
По мере ввода программы в окне текстового редактора Visual LISP определяет, чем является введенное слово: встроенной функцией AutoLISP, числом, строковой константой или другим элементом языка, который он распознает. Каждому виду элемента присваивается собственный цвет, что помогает обнаружить отсутствующие кавычки или имя функции с орфографической ошибкой. Заданная по умолчанию схема цветов такова: Таблица 1
Элементы языка AutoLISP Цвет
Встроенные функции Голубой
Строки Сиреневый
Целые числа Зеленый
Вещественные числа Цвет морской волны
Комментарии Сиреневый на сером фоне
Круглые скобки Красный
Переменные пользователя Черный
Если функция неизвестна Visual LISP, она не будет идентифицирована и кодирована цветом.
Редактор Visual LISP обеспечивает кодирование цветом файлов LISP, а также DCL, SQL, С.
Visual LISP использует расширение имени файла, чтобы определить тип файла, и выбирает соответствующий цвет. Цвет, связанный с типом файла, можно изменять.
Для этого необходимо выбрать пункт Syntax Coloring… (Синтаксис установки цвета) из всплывающего меню пункта Window Attributes (Параметры окна) из падающего меню Tools (Инструменты) главного меню Visual LISP.
Если вы выделяете имя функции в окне текстового редактора и нажимаете кнопку Help (По-мощь) — кнопку со знаком вопроса на инструментальной панели Tools (Инструменты), появляет-ся справка для данной функции Visual LISP.
Наиболее важные функции, необходимые при работе в окне текстового редактора, сосредо-точены в контекстном меню. Для быстрого вызова контекстного меню щелкните правой кноп-кой мышки в любом месте окна текстового редактора или нажмите комбинацию клавиш Shift+F10 (Рис. 6).
Примечание! В зависимости от позиции курсора, а также оттого, имеется ли выделенный текст в окне текстового редактора, некоторые пункты могут быть неактивными (невысвеченными) или даже отсутствовать.
3.5. Контекстное меню текстового редактора.
Большинство пунктов контекстного меню окна текстового редактора аналогичны пунктам контекстного меню окна консоли (см. Рис. 2), поэтому перечислим только новые из них:
Go to Last Edited (Идти к последнему месту редактирования) — переместить курсор в позицию последней точки редактирования;
Toggle Breakpoint (Установить/удалить точку прерывания в позиции курсора) — установить точ-ку прерывания в позиции курсора, если ее там не было, и удалить ее, если она там была.
Если курсор стоит в позиции точки прерывания, то при вызове контекстного меню правой кноп-кой мышки в нем вверху появляется новый пункт
Breakpoint service (Обслуживание точек прерывания). При выборе этого
пункта контекстного меню окна текстового редактора появляется
Рис 6 Контекстное соответствующее диалоговое окно.
меню окна текстового
редактора
В редакторе текста Visual LISP термин «слово» означает последовательность символов, отде-ляемых одним или большим количеством следующих специальных символов: Таблица 2
Space пробел
Tab метка табуляции
‘ одиночная кавычка
( левая круглая скобка
) правая круглая скобка
“ удвоенная кавычка
; точка с запятой
\n перейти к новой строке (NewLine)
[] непечатные символы ASCII (например, \003-\042)
Практическое задание.
1. Познакомиться с рабочими окнами и инструментами Visual LISP, рассмотренными в данной работе.
2. Выполнить тестовые примеры по заданию, установленному индивидуально преподавателем.