Лабораторная работа №10.
Тема: Возможности текстового редактора Visual LISP по форматированию, оргнаизации закла-док, поиску и замене фрагментов кода. Имеющийся сервис. Пример выполнения.
Цель: Завершение обзора возможностей текстового редактора Vidual LISP; учет и оценка дейст-вий по редактированию исходного текста программ; организация взаимодействия пользователя с графической средой AutoCAD и и существующими средствами Visual LISP.
Ход работы.
1. Запустить AutoCAD одним из возможных способов. Загрузить Visual LISP.
2. Продолжение знакомства с сервисными возможностями текстового редактора Visual LISP.
2.1. Использование закладок Bookmarks.
Visual LISP имеет специальное средство для пошагового перемещения по тексту — набор за-кладок (Bookmarks). Это средство (до 32 закладок в каждом окне) помогает быстро перемещать-ся по тексту в редакторе, консоли и других текстовых окнах. Каждое окно поддерживает свой собственный набор закладок, а инструментальные средства передвижения по закладкам допус-кают переход к закладке внутри каждого окна независимо от других окон. Набор закладок внут-ри окна известен как кольцо (RING) закладок. Можно шагать по кольцу (набору) закладок впе-ред или назад и в конечном счете вернуться к начальной закладке.
Всякий раз при переходе от закладки к закладке Visual LISP временно удаляет закладку, к ко-торой производится переход, и помещает в начало строки курсор. Чтобы установить/удалить за-кладку, переместите курсор в строку установки/удаления закладки. Щелкните по кнопке Toggle bookmark (Установить/удалить закладку) — кнопке с синим флагом на инструментальной панели Search (Поиск) или нажмите комбинацию клавиш Alt+. (точка).
Если использовать пункт Find (Найти) для поиска текста, закладки могут быть выставлены автоматически.
Когда текущее окно содержит закладки, вы можете:
• переместить курсор в строку, содержащую предыдущую закладку в кольце. Для этого необхо-димо выбрать пункт Previous Bookmarks (Предыдущие закладки) из всплывающего меню Bookmarks (Закладки) падающего меню Search (Поиск) или нажать кнопку Previous Book-marks (Предыдущие закладки) на инструментальной панели. Можно также нажать комбинацию клавиш Ctrl+, (запятая);
• переместить курсор в строку, содержащую следующую закладку в кольце. Для этого выберите пункт Next Bookmarks (Следующие закладки) из всплывающего меню Bookmarks (Закладки) падающего меню Search (Поиск) или нажмите кнопку Next Bookmarks (Следующие закладки) на инструментальной панели. Можно также нажать комбинацию клавиш Ctrl+. (точка). Можно выбирать текст и между двумя закладками:
• чтобы выбрать текст между текущим расположением закладки и предыдущим, необходимо нажать комбинацию клавиш Ctrl+Shift+, (запятая);
• текст между текущим расположением закладки и следующим можно выбрать, если нажать комбинацию клавиш Ctrl+Shift+. (точка).
Для удаления одиночной закладки переместите курсор в строку, в которой расположена за-кладка. Щелкните по кнопке Toggle Bookmark (Установить/удалить закладку) на инструмен-тальной панели Search (Поиск) или нажмите комбинацию клавиш Alt+. (точка). Пункт Toggle Bookmark работает как переключатель «вкл/выкл». Если вы выбираете пункт, когда закладка ус-тановлена, Toggle Bookmark выключает ее. Воспользуйтесь этой командой, когда нет закладок, и Toggle Bookmark (Установить/удалить закладку) вставит закладку.
Для удаления всех закладок в вашей программе нажмите на инструментальной панели кноп-ку Clear All Bookmark (Очистить все закладки) или выберите пункт Clear All (Очистить все) из всплывающего меню Bookmarks (Закладки) падающего меню Search (Поиск).
2.2. Форматирование документа.
Visual LISP имеет специальное средство для структурирования (форматирования) программ – ф о р м а т е р. Форматер Visual LISP преобразует выражения AutoLISP в красивый удобочитае-мый вид.
Для форматирования всего текста в активном окне редактора выберите пункт Format Auto-LISP in Editor (Отформатировать программу в активном окне редактора) падающего меню Tools (Инструменты) главного меню Visual LISP или щелкните по кнопке Format Edit Window (Отформатировать программу в активном окне редактора) на инструментальной панели Tools (Инструменты).
Для форматирования части программы выделите фрагмент программы и выберите пункт Format AutoLISP падающего меню Tools (Инструменты) или щелкните по кнопке Format Se-lection (Форматирование выделенного фрагмента) инструментальной панели Tools (Инструмен-ты). Если выделенный фрагмент выражений AutoLISP имеет ошибки, форматер выдаст сообще-ние об ошибке.
Допустим, в окне текстового редактора введено следующее выражение AutoLISP:
(SETQ А 10 В 20 С 40
Но в этом выражении вы случайно забыли поставить закрывающую круглую скобку. Это вы-ражение выделяется и запускается процедура форматирования. Для этого надо щелкнуть по кнопке Format Selection (Форматирование выделенного фрагмента). Появится окно с сообще-нием и вопросом (Рис. 1). В ответ на сообщение и вопрос Unbalanced opening bracket found. Add closing brackets? (Обнаружена несбалансированная открывающая круглая скобка. Доба-вить закрывающую круглую скобку?) надо щелкнуть по кнопке Yes, и появится окно с таким подтверждением:
1 closing brackets were added while formatting (1 закрывающая круглая скобка была добавлена в процессе форматирования).
Следует щелкнуть по кнопке ОК. Появится результат форматирования введенного и выделен-ного выражения:
(SETQ А 10 В 20 С 40)
Рис. 1 Сообщение форматера
Если хотите установить круглые скобки самостоятельно, нажмите кнопку No (Нет).
Форматер Visual LISP позволяет задать вид форматирования. Для этого необходимо вызвать пункт AutoLISP Format Options… (Параметры форматирования программ AutoLISP) из всплы-вающего меню (Рис. 2), а затем пункт Environment Options… (Параметры среды) из падающего меню Tools (Инструменты). На экране появится диалоговое окно AutoLISP Format options (Параметры форматирования AutoLISP) (Рис. 3).
Существуют два основных стиля форматирования программ:
• однострочный;
• многострочный (широкий, узкий или в столбец).
Рис. 2 Выбор опций форматирования
Рис 3 Диалоговое окно выбора стиля форматирования
В соответствии с однострочным стилем все элементы программы размещаются в одной стро-ке и разделяются одиночным пробелом.
Согласно многострочному широкому стилю первый элемент размещается в той же строке, что и имя функции, а остальные элементы выравниваются в столбце под первым элементом. Многострочный узкий стиль предполагает размещение первого элемента в следующей строке после имени функции и выравнивание остальных элементов в столбце под первым элементом. Смещение позиции первого элемента относительно исходной позиции выражения управляется с помощью параметра Narrow style indentation (Суженный стиль выравнивания).
Многострочный стиль в столбец — это стиль, в котором все элементы размещены в столбец.
В дополнение к основным стилям форматирований можно устанавливать и другие параметры форматирования.
Рассмотрим различные режимы управления позицией расположения круглой заключительной скобки для многострочных стилей форматирования, из которых может быть выбран только один:
• Close at the same line (Закрыть на той же самой строке) — закрытие круглой скобкой на послед-ней строке каждого выражения;
• Close at the new line with inner indentation (Закрыть в новой строке с внутренним выравнива-нием) — закрытие круглой скобки на следующей строке после последней строки каждого выра-жения с внутренним выравниванием;
• Close at the new line with outer indentation (Закрыть в новой строке с внешним отступом) — за-крытие круглой скобки на следующей (после последней строки каждого выражения) строке с внешним выравниванием.
Текстовое поле Form-closing comment prefix (Завершающая форма комментария) позволяет добавить комментарий после выражения и используется только с последними двумя режимами. Formatter вставляет комментарий вида:
; _ END OF <имя функции>
Включенный флажок Preserve existing line breaks (Сохранить существующие разрывы строк) позволяет сохранить разрыв строк.
Флажок Split comments (Разбить комментарии) позволяет разбить длинный комментарий, который выходит за пределы правого поля.
Форматер Visual LISP распознает пять видов комментариев и позиционирует их следующим образом:
;| Встроенный комментарий |; — включается в любое место программы, задается внутри сим-волов ; |… | ;
; Комментарий после точки с запятой — вставляется в конец текущей строки;
;; Комментарий в текущем ряду — пишется, начиная с новой строки с текущей позиции преды-дущего выражения, строки выравниваются по последней строке программы.
;;; Заголовок или комментарий без отступа.
; _ Функционально заключительный комментарий — комментарий в конце последнего выра-жения.
Рассмотрим различные виды комментариев на следующем примере.
Исходный текст:
(DEFUN LIST123 (X)
; | встроенный комментарий |;
(LIST 1 2 3) ; комментарий после точки с запятой
;; комментарий в текущем ряду
;;; заголовок или комментарий без отступа
) ; _ функционально заключительный комментарий
Отформатированный текст:
( DEFUN LIST123 (X);| встроенный комментарий | ;
(LIST 1 2 3) ; комментарий после точки с запятой
;; комментарий в текущем ряду
;;; заголовок или комментарий с позиции начального выражения
); _ функционально заключительный комментарий
Чтобы сохранить установки параметров форматтера Visual LISP, выберите пункт Save Set-tings (Сохранить установки) из падающего меню Tools (Инструменты) интегрированной среды Visual LISP. Текущие установки можно сохранить также в активном текстовом окне редактора Visual LISP. Выберите пункт Environment options (Параметры среды) падающего меню Tools (Инструменты), а затем пункт AutoLISP Format options (Параметры форматирования Auto-LISP) из всплывающего меню.
Размер окна и табуляция соответствуют установкам Windows. Установки можно изменить, если выбрать пункт Wiridow Attributes (Атрибуты окна) падающего меню Tools, a затем пункт Configure Current (Текущая конфигурация) всплывающего меню. Форматер доступен только из окна редактора Visual LISP.
Одним из основных преимуществ Visual LISP является наличие различных средств отладки. Данные средства позволяют следить за тем, что происходит во время выполнения программы. При этом можно выбрать любой ее фрагмент. Не менее важно и то, что Visual LISP обеспечива-ет ряд возможностей для обнаружения ошибок прежде, чем программа начнет выполняться.
По сравнению с другими языками программирования AutoLISP использует круглые скобки наиболее часто. Как уже отмечалось, одна из самых распространенных синтаксических ошибок в AutoLISP — несоответствие количества открытых круглых скобок количеству закрытых. Visual LISP располагает рядом инструментальных средств, необходимых для обнаружения несоответ-ствия между круглыми скобками.
Форматер Visual LISP осуществляет поиск незакрытых скобок во время форматирования про-граммы. Он может добавить круглые скобки там, где считает нужным,- как правило, в конце программы.
Чтобы определить, правильно ли установлены круглые скобки, необходимо проверить струк-туру вашей программы. Для поиска парных круглых скобок можно использовать один из пунк-тов всплывающего меню пункта Parentheses Matching (Соответствие круглых скобок) падаю-щего меню Edit (Редактирование):
• Match Forward (Ctrl+]) (Переместить курсор в конец выражения) -перемещает курсор в по-зицию за соответствующей закрывающей круглой скобкой, которая соответствует откры-вающей круглой скобке. Если близлежащего соответствия нет, курсор перемещается на один шаг вверх в иерархии вложения функций.
• Match Backward (Ctrl+[) (Переместить курсор в начало выражения) — перемещает курсор в позицию соответствующей открывающей круглой скобки. Если такой нет, курсор перемеща-ется на один шаг вверх в иерархии вложения функций,
• Select Forward (Ctrl+Shift+]) (Переместить курсор в конец выражения и выделить его) — пе-ремещает курсор так же, как и команда MatchForward, a кроме того, выделяет весь текст ме-жду начальной и конечной позициями.
• Select Backward (Ctrl+Shift+[) (Переместить курсор в начало выражения и выделить его) — перемещает курсор так же, как и команда Match Backward, и, кроме того, выделяет весь текст между начальной и конечной позициями.
Если выбрать пункт Check text in Editor (Проверить синтаксис текста) падающего меню Tools (Инструменты) главного меню Visual LISP, можно провести дополнительную проверку синтаксиса программы.
Для проверки синтаксиса фрагмента программы используйте пункт Check Selection (Провер-ка синтаксиса выделенного текста) из падающего меню Tools.
Чтобы выполнить программу из окна текстового редактора, выберите пункт Load text in edi-tor (Загрузить текст из редактора) падающего меню Tools главного меню Visual LISP или на-жмите кнопку Load active edit window (Загрузить текст из активного окна редактора) на инст-рументальной панели Tools. На экране появится сообщение о загрузке программы на консоль.
Чтобы выполнить программу, введите имя функции в круглых скобках. Например:
_1$ (CONTENT1)
Вы можете выполнить только часть программы. Для этого необходимо выделить нужную часть программы, выбрать пункт Load Selection (Загрузить выделенный текст) падающего меню Tools (Инструменты).
Рассмотрим процесс загрузки файлов с расширением LSP в системе AutoCAD. Создайте файл, например, CONTENT1.LSP и наберите в нем следующую программу:
(DEFUN CONTENT1 (IMY)
(COMMAND
«STYLE» «» «TIMES NEW ROMAN CYR» «60» «1» «» «» «» «»
«TEXT» «20,1500» «0» (STRCAT «ДОРОГОЙ » IMY » !!!»)
«TEXT» «3,100» «17» » АВТОР ВАС ПРИВЕТСТВУЕТ »
«TEXT» «250,50» «0» » УСПЕХА ВАМ !!!»
«ZOOM» «A») ; Текст приветствия будет размещен во весь экран
)
(CONTENT1 «Пользователь»)
Командная строка AutoCAD для загрузки файла будет выглядеть следующим образом:
COMMAND: (LOAD «C:\CONTENT1»)
Рис. 4. Диалоговое окно загрузки файлов
Ждите ответ на экране монитора.
Файл CONTENT1.LSP можно ввести также, если использовать диалоговое окно Load Auto-LISP, ADS, and ARX Files (Загрузить AutoLISP, ADS, и ARX Файлы) (Рис. 4). Для этого выбе-рите пункт Load Application… (Загрузить приложение) в падающем меню Tools (Инструменты).
В открывшемся диалоговом окне включите флажок Save list (Сохранить список). В следую-щий раз при выборе команды Load Application… (Загрузить приложение) падающего меню Tools имя файла будет внесено в диалоговое окно загрузки файлов автоматически.
Далее в этом диалоговом окне щелкните мышкой по кнопке File… (Файл…), появится окно выбора файлов Select AutoLISP, ADS, ог ARX File (Выберите файл AutoLISP, ADS или ARX), показанное на Рис. 5.
Рис. 5 Окно выбора файлов
Выделить рассматриваемый файл CONTENT1.LSP и активируйте его (дважды щелкнув по нему мышкой). После этого на экране вновь появится диалоговое окно загрузки файлов Load AutoLISP, ADS, and ARX Files (Загрузить AutoLISP, ADS, и ARX файлы), однако в нем уже будет файл CONTENT1.LSP.
Щелкните по кнопке Load (Загрузить), появится окно AutoCAD с приветствием (Рис. 16).
Рис. 6 Графическое окно системы AutoCAD
3. Рекомендации.
Со временем пользователь, как правило, нарабатывает много программ на языке AutoLISP. Чтобы в них ориентироваться, необходимо давать файлу такое оригинальное имя, которое соот-ветствует содержанию программы. Например, имя MNKV.LSP можно дать файлу, в котором разработана программа для статистической обработки данных методом наименьших квадратов. Как можно заметить, в имени программы используются начальные буквы названия метода. Скажем, программа, предназначенная для расчета сетевого вероятностного графика, может быть названа так: SETV.LSP.
Однако, например, метод наименьших квадратов может быть предназначен для определения параметров линейного уравнения регрессии, квадратического или еще более высоких степеней. Тогда соответствующие названия файлов могут выглядеть следующим образом: MNKV_l.LSP, MNKV_2.LSP, MNKV_M.LSP.
Если, допустим, разработана программа для решения дифференциальных уравнений методом Рунге-Кутта, то можно ее назвать так: RUNG-KUT.LSP.
Желательно, чтобы число символов в названии файлов не превышало 8.
Практическое задание.
1. Изучить действие рассмотренных в работе функций на аналогичных примерах с другими параметрами.
2. Создать программу по заданию, установленному индивидуально преподавателем.