Книга

Об авторах | Содержание

Предыдущий раздел ! | Следующий раздел !

Глава 12. AutoLISP в среде Visual LISP.

Часть 4.

12.5. Функции пользователя

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

(lambda <аргументы> <выражения>) - параметр <аргументы> Оформляется в виде списка временных переменных, а параметр <выражения> - любая последовательность выражений, оперирующих выбранными аргументами; возвращается результат последнего вычисленного выражения.

Обращение к описанной функции lambda осуществляется с помощью функций apply или mapcar. Поясним на примерах.

Выражение (lambda (u v w) (abs (+ и (* 2 v) (* з w) ) ) ) является опи-санием непоименованной функции, вычисляющей абсолютную величину суммы u+2v+3w, где u, v и w - имена временных переменных, выбранных для обозначения аргументов (действие переменных не распространяется за пределы функции lambda). Для использования созданной таким образом одноразовой функции можно в программе вставить, например, текст: (apply '(lambda (u v w) (abs (+ u (* 2 v) (* 3 w)))) (list 4.7 -3.2 10.5)), результатом которого будет 29.8. Вычислитель AutoLISP подставит вместо u, v и w, соответственно, 4.7, -3.2 и 10.5 и вычислит выражение (abs (+ 4.7 (* 2 -3.2) (* 3 10.5))).

Второй пример:

(mapcar '(lambda (q) (+ 1.0 q (* q q) (* q q q))) (list 1.7 2.2 5.8 3.0)) - возвращает (10.503 18.688 235.552 40.0).

Здесь функция, вычисляющая выражение l + q + q^2 + q^3, поочередно применяется к каждому из элементов списка (list 1.7 2.2 5.8 3.0).

Пользователь может создавать свои функции и применять их параллельно со встроенными. Не рекомендуется в качестве имен своих функций брать зарезервированные имена, т. к. это приведет к некорректной работе отдельных команд системы AutoCAD. Для того чтобы получить полный перечень зарезервированных символов AutoLISP, можно воспользоваться функцией atoms-family, имеющей следующий синтаксис:

(atoms-family <форма> [<список>])

Если аргумент <список>, который содержит строковые имена символов, проверяемых на резервирование, задан, то функция возвращает имена тех символов, которые отнесены в данной версии системы AutoCAD к резервированным; если аргумент <список> не задан, то функция возвращает полный список зарезервированных символов (основу этого списка составляют имена функций); аргумент <форма> может принимать значения 0 или 1, он влияет на форму возвращаемого списка (при 0 в список помещаются символы, при 1 - строки).

Пример:

(acad_strisort (atoms-family l)) - возвратит список зарезервированных символов, который будет тут же с помощью функции acad_strlsort отсортирован по алфавиту.

Для создания функций пользователя предназначена специальная функция defun:

(defun <имя> ([<аргументы>] [/ <переменные>]) <выражения>) ≈ описывает тело функции, ее аргументы и локальные переменные (т. е. переменные, которые не являются глобальными и имеют действие только в теле самой функции; вне тела функции эти символы не определены); возвращаемым значением функции является результат последнего вычисленного выражения ее тела.

Пример:

(defun oursum (al а2 а3 / s)

(setq s (+ a1 а2))

(- s a3)

) ; конец тела функции

Здесь определена функция с именем oursum. У функции три аргумента: a1, а2 и аЗ ≈ вместо них AutoLISP подставит значения, с которыми эта функция будет вызвана. Переменная s используется для временного хранения результата операции суммирования. В теле функции всего два выражения: первое вычисляет сумму a1 и а2 и сохраняет ее в переменной s, а второе вычисляет разность между s и а3. Вычисленная разность является значением последнего выражения в теле функции, поэтому является и возвращаемым значением функции oursum. Как аргументы al, а2 и а3, так и переменная s являются локальными переменными, т. е. их значения не доступны вне тела функции. Для того чтобы функцией oursum можно было воспользоваться в текущем рисунке AutoCAD, ее необходимо предварительно сохранить в текстовом файле с расширением lsp (например, ourfunctions.lsp) и затем загрузить этот файл с помощью функции load:

(load "ourfunctions.lsp")

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

(setq newvall (oursum 55.02 0.933 -2.64))

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

Замечание

Файл с расширением Isp не обязан содержать только тело одной функции. В нем могут присутствовать тела других функций или исполняемые выражения.

Загрузить файл с LISP-программами можно и с помощью пункта AutoLISP (AutoLISP), Загрузить (Load) падающего меню Сервис (Tools), который вызывает диалоговое окно Загрузка/выгрузка приложений (Load/Unload Applications), приведенное на рис. 12.6.

В языке AutoLISP системы AutoCAD 2000 присутствуют еще такие функции, как defun-q, defun-q-list-set и defun-q-list-ref, позволяющие обращаться к телу функции как к списку, в который необходимо внести изменения.

Пользовательские файлы с Lisp-программами можно компилировать. Для этого используется специальная функция vlisp-compile:

(vlisp-compile '<режим> <имя1> [<имя2>])

Рис. 12.6. Диалоговое окно Загрузка/выгрузка приложений

Функция имеет следующие аргументы:

  • <режим> - наименование режима компиляции; может принимать значения st (стандартный), ism (оптимизация и непрямое связывание) или дsa (оптимизация и прямое связывание); аргументу должен обязательно предшествовать апостроф;
  • <имя1> - имя компилируемого файла с расширением lsp;
  • <имя2> - имя выходного файла с расширением fas.

Обычное значение параметра <режим> - st. При необходимости оптимизировать исполняемый код можно воспользоваться другими вариантами.

В результате компиляции образуется файл с расширением fas, на загрузку которого требуется меньше времени, чем на загрузку файла с исходным кодом (с расширением Isp), поэтому для отлаженных программ использование fas-файлов предпочтительнее. Для загрузки компилированных файлов также применяется функция load.

Замечание

Функция компиляции работает при загруженной среде разработки приложений Visual LISP (см. разд. 12.7).

 

12.6. Работа с примитивами AutoCAD

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

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

Функция entsel возвращает список, первым элементом которого является имя указанного пользователем примитива. Это имя может быть извлечено с помощью функций car или nth.

Функция ssget возвращает имя набора, состоящего из некоторого количества имен примитивов (при неудачном выборе вместо имени набора может быть возвращен nil). Длина набора оценивается с помощью функции sslength, а извлечение из него нужного элемента выполняется функцией ssname.

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

Проиллюстрируем приведенную схему следующим примером. Предположим, что в рисунке на слое HOLES находятся отверстия, построенные с помощью команды КРУГ (CIRCLE). Необходимо прочитать все эти круги и сформировать два списка, в первом из которых собрать радиусы кругов, а во втором - точки с координатами центров. Примерный вариант такой программы приведен в листинге 12.13.

Листинг 12.13. Пример функции rcl, работающей с примитивами рисунка

(defun rcl ( / )

; Начальные значения списков радиусов (list rad) и центров (list cen) (setq list_rad '() list_cen '())

; Создание набора из кругов на слое HOLES

(setq nab_cir (ssget "_X" (list (cons 8 "HOLES") (cons 0 "CIRCLE"))))

; Проверка, сформировался ли набор nab cir

; (если нет, то предыдущая операция вернет nil)

(if (null nab_cir)

(progn

(princ "\пНет кругов на слое HOLES. "); сообщение об отсутствии

(princ); тихий выход

); конец progn

(progn

(setq i -1 nab_len (sslength nab_cir))

; Цикл по количеству элементов набора nab_cir

(repeat nab len

(setq i (1+ i))

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

(setq cirlist (entget (ssname nab_cir i)))

(setq radcir (cdr (assoc 40 cirlist))) .

(setq cencir (cdr (assoc 10 cirlist)))

; Добавление радиуса и точки центра к спискам list rad и list cen

(setq list rad (append list rad (list radcir)))

(setq list_cen (append list_cen (list cencir)))

); конец repeat

; Печать результирующих списков

(princ "\nРадиусы: ")

(princ list_rad)

(princ "\nЦентры: ")

(princ list cen)

); конец progn

) ; конец if

) ; конец defun

Функцию rcl следует сохранить (например, в файле rcl.lsp), после чего ее можно загрузить в память:

(load "rcl.lsp")

Возможно, что при загрузке файла rcl.isp перед его именем придется добавить полный путь к месту его расположения. Если файл загрузился без ошибок, то система AutoCAD возвращает в верхнем регистре имя последней загруженной функции (RCL). Теперь остается только обратиться к ней в командной строке:

(rcl)

Возможный вид результата работы функции rcl:

Радиусы: (66.0916 29.1292)

Центры: ((179.603 194.961 0.0) (43.0525 184.539 0.0))((179.603 194.961 0.0) (43.0525 184.539 0.0))

В данном примере все использованные в функции rcl переменные были глобальными, что позволит воспользоваться их значениями другим программам. Однако нетрудно заметить, что по окончании работы функции rcl полезными являются только переменные list_rad и list_cen. Остальные переменные хранят промежуточные результаты и, скорее всего, уже больше не нужны. Для аккуратности следует либо всем ненужным переменным в конце работы программы присвоить значение nil, либо включить их имена в список локальных переменных функции rcl, например:

(defun rcl ( / nab cir i nab_len radcir cencir cirlist) ...

 

12.7. Среда Visual LISP

Среда Visual LISP введена в систему AutoCAD 2000 для упрощения процесса написания и отладки программ на языке AutoLISP. На рис. 12.1 показано диалоговое окно Visual LISP для AutoCAD (Visual LISP for AutoCAD), которое появляется на экране, если пользователь вводит в командной строке команду VLISP (такое же наименование применяется и в англоязычной версии AutoCAD). Другой формой этой команды является VLIDE. К аналогичному результату приводит использование пункта AutoLISP, Редактор Visual LISP (Visual LISP Editor) падающего меню Сервис (Tools).

Рис. 12.7. Плавающее положение панелей диалогового окна Visual LISP для AutoCAD

Диалоговое окно Visual LISP для AutoCAD (Visual LISP for AutoCAD) является самостоятельной оболочкой внутри системы AutoCAD, со своими падающими меню и панелями инструментов. Панели инструментов могут находиться не только в фиксированном положении (см. рис. 12.1), но и в плавающем (см. рис. 12.7).

Внутри рабочей зоны располагаются окна для открытых текстовых файлов (могут редактироваться файлы LISP-программ, DCL-файлы диалоговых окон, SQL-файлы операций с базами данных, файлы программ на языке С), окно Консоль Visual LISP (Visual LISP Console) (используется для связи с системой AutoCAD), окно Трассировка (Trace) (используется для отладки программ).

 

12.7.1. Обзор падающих меню

В состав среды Visual LISP входят девять падающих меню: Файл (File), Правка (Edit), Поиск (Search), Вид (View), Проект (Project), Отладка (Debug), Сервис (Tools), Окно (Window), Справка (Help). Во всех падающих меню есть и постоянные пункты, и пункты, которые меняют свое состояние или исчезают в зависимости от конкретного этапа разработки программы.

Рис. 12.8. Падающее меню Файл

Меню Файл (File) (рис. 12.8) предназначено для выполнения операций с файлами и включает в себя следующие пункты:

  • Новый файл (New File)
  • Открыть файл (Open File)
  • Открыть заново (Reopen)
  • Сохранить (Save)
  • Сохранить как (Save As)
  • Сохранить Все (Save All)
  • Закрыть (Close)
  • Обратить (Revert)
  • Закрыть все (Close All)
  • Печать (Print)
  • Параметры печати (Print Setup)
  • Собрать приложение (Make Application)
  • Загрузить файл (Load File)
  • Выход (Exit)

Назначение пунктов соответствует их наименованиям. Пункт Обратить (Revert) позволяет восстановить содержимое файла в активном окне, аналогично пункту Открыть заново (Reopen). Работа пункта Собрать приложение (Make Application) рассмотрена в разд. 12.8.

Меню Правка (Edit) (рис. 12.9) содержит следующие пункты:

  • Отменить (Undo)
  • Повторить (Redo)
  • Вырезать (Cut)
  • Копировать (Copy)
  • Вставить (Paste)
  • Удалить (Delete)
  • Выделить все (Select All)
  • Проверка скобок (Parantheses Matching)
  • Дополнительные функции (Extra Commands)

Рис. 12.9. Падающее меню Правка >

Первые семь пунктов меню соответствуют аналогичным пунктам меню Правка (Edit) других приложений Windows 95/98. Пункт Проверка скобок (Parantheses Matching) содержит подпункты операций для контроля редактируемого текста:

  • Найти закрывающую (Match Forward)
  • Найти открывающую (Match Backward)
  • Выделить до конца (Select Forward)
  • Выделить до начала (Select Backward)

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

Меню Поиск (Search) (рис. 12.10) предназначено для операций текстового редактора Visual LISP (в частности, операций поиска и замены) и включает в себя следующие пункты:

  • Найти (Find)
  • Заменить (Replace)
  • Найти/Заменить далее (Find/Replace Next)
  • Дописать словом из окна (Complete Word by Match)
  • Дописать словом из списка (Complete Word by Apropos)
  • Закладки (Bookmarks)
  • Первое сообщение (First Message)
  • Следующее сообщение (Next Message)
  • Перейти на строку (Go to Line)
  • Последняя правка (Go to Last Edited)

Рис. 12.10. Падающее меню Поиск

Поясним назначение некоторых из этих пунктов (смысл остальных пунктов ясен из наименований). Пункт Дописать словом из окна (Complete Word by Match) дает возможность редактору Visual LISP дописать (закончить) начатое вами слово аналогично предыдущему слову с таким же началом в текущем окне редактируемой программы. Пункт Дописать словом из списка (Complete Word by Apropos) позволяет получать варианты дописывания слова из списка символов AutoLISP, куда входят имена встроенных функций (рис. 12.11).

Рис. 12.11. Применение операции Дописать словом из списка

С помощью закладок можно помечать нужные места в тексте для быстрого перемещения между ними в дальнейшем. Операции установки, удаления закладок и переходов между закладками выполняются с помощью подпунктов Закладка Вкл/Откл (Toggle Bookmark), Следующая закладка (Next Bookmark), Предыдущая закладка (Previous Bookmark), Убрать все закладки (Clear All Bookmarks) пункта Закладки (Bookmarks). Еще два подпункта - Выделить до следующей закладки (Select to Next Bookmark) и Выделить до предыдущей закладки (Select to Previous Bookmark) - того же пункта меню позволяют облегчить операции выделения больших участков текста.

Падающее меню Вид (View) (см. рис. 12.12) предназначено для операций просмотра различной вспомогательной информации во время работы L1SP-программы, а также для работы с панелями инструментов диалогового окна Visual LISP для AutoCAD (Visual LISP for AutoCAD).

Рис. 12.12. Падающее меню Вид

Меню состоит из следующих пунктов:

  • Изучить (Inspect)
  • Стек трассировки (Trace Stack)
  • Поиск ошибок (Error Trace)
  • Инспектор символов (Symbol Service)
  • Окно контрольных значении (Watch Window)
  • Параметры справочного списка (Apropos Window)
  • Окно точек останова (Breakpoints Window)
  • Окно вывода (Output Window)
  • Консоль LISP (LISP Console)
  • Обзор базы данных рисунка (Browse Drawing Database)
  • Панели инструментов (Toolbars)

Пункт Изучить (Inspect) позволяет вызывать специальные окна Изучение (Inspect), в которых можно посмотреть состояние переменных, списков, наборов, примитивов, а также выражений AutoLISP. Имя изучаемого объекта или выражение должно быть предварительно выделено в тексте программы; если ничего не было выделено, то перед открытием очередного окна Изучение (Inspect) выдается запрос имени. Пример открытого окна Изучение (Inspect) приведен на рис. 12.13, где рассмотрен список с характеристиками окружности.

Рис. 12.13. Окно Изучение

Пункт Стек трассировки (Trace Stack) выводит на экран одноименное окно. В этом окне приводится перечень последних выполненных операций (рис. 12.14).

В верхней части окна расположены кнопки:

  • Освежить (Refresh) - очищает содержимое окна;
  • Копировать в окно трассировки/журнал (Copy to Trace/Log) - копирует текст в специальное окно Трассировка (Trace).

Если в окне Стек трассировки (Trace Stack) выделить какую-нибудь строку, то с помощью правой.кнопки мыши можно вызвать контекстное меню с дополнительными операциями над элементами стека трассировки (объем контекстного меню может меняться): Изучить (Inspect), Печать (Print), Символ функции (Function Symbol), Копировать (Copy), Локальные переменные (Local Variables), Положение в тексте (Source Position), Позиция вызова функции (Call Point Source).

Пункт Поиск ошибок (Error Trace) падающего меню Вид (View) вызывает одноименное окно (рис. 12.15) с информацией об ошибках, возникших при выполнении программы.

Рис. 12.14. Окно Стек трассировки

Рис. 12.15. Окно Поиск ошибок

Если выделить в этом окне строку, то нажатием правой кнопки мыши можно вызвать контекстное меню для получения дополнительных сведений об элементе окна Поиск ошибок (Error Trace). Контекстное меню имеет те же пункты, что и контекстное меню окна Стек трассировки (Trace Stack). На рис. 12.16 показан пример дополнительного окна, вызванного с помощью пункта Показать сообщение (Show Message), которое появляется в контекстном меню для строки SYNTAX-ERROR.

Рис. 12.16. Окно Инфо с дополнительной информацией об ошибке

Пункт Инспектор символов (Symbol Service) падающего меню Вид (View) открывает одноименное окно (рис. 12.17), которое выполняет функции, похожие на функции окна Изучение (Inspect), но только для символов AutoLISP.

Рис. 12.17. Окно Инспектор символов

Окно имеет три поля: Имя (Name), Значение (Value) и Флаги (Flags). Назначение первых двух полей очевидно (имя символа и значение символа), а поле Флаги (Flags) содержит четыре флажка, которые могут быть установлены или сброшены для выбранного символа:

  • Трассировка (Trace) - отслеживание с помощью трассировки;
  • Отладка на входе (Debug on Entry) - отладка при входе в функцию;
  • Защита от присвоения (Protect Assign) - защита специальных символов от случайного присвоения (например, т, pi и др.);
  • Экспорт в AutoCAD (Export to AutoCAD) - экспорт функции в AutoCAD, чтобы сделать ее доступной для приложений ObjectARX.

Окно Инспектор символов (Symbol Service) в верхней части имеет четыре кнопки (слева направо):

  • Контрольное значение (Watch) - добавляет символ к окну Контрольное значение (Watch);
  • Изучить (Inspect) - открывает окно Изучение (Inspect) для данного символа;
  • Показать описание (Show Definition) - вызывает окно текстового редактора и выделяет в нем текст символа, являющегося пользовательской функцией;
  • Справка (Help) - вызывает справку по Visual LISP с описанием символа, являющегося встроенной функцией.

Пункт Окно контрольных значений (Watch Window) падающего меню Вид (View) выводит на экран окно Контрольное значение (Watch) (рис. 12.18).

Окно отображает значения выбранных символов в ходе выполнения программы. Добавление символов к этому окну производится либо с помощью окна Инспектор символов (Symbol Service) (кнопкой Контрольное значение (Watch)), либо с помощью первой (левой) из четырех кнопок (Добавить контрольное значение (Add Watch)), расположенных в верхней части окна Контрольное значение (Watch). Перечислим эти кнопки:

  • Добавить контрольное значение (Add Watch)
  • Очистить окно (Clear Window)
  • Сортировать выражения (Sort Expressions)
  • Копировать в окно трассировки/журнал (Сору to Trace/Log)

Пункт Параметры справочного списка (Apropos Window) падающего меню Вид (View) выводит на экран окно Параметры справочного списка (Apropos) (рис. 12.19).

Рис. 12.18. Окно Контрольное значение

Рис. 12.19. Окно Параметры справочного списка

Замечание

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

Данное окно позволяет просматривать список зарезервированных символов (в первую очередь, имен встроенных функций). Введенная в верхнем поле последовательность букв (на рис. 12.19 введена одна буква "f") является основным критерием формирования списка выводимых имен (эти буквы должны обязательно присутствовать в именах всех символов списка). Пользователь может с помощью флажков указать, должна ли эта последовательность обязательно присутствовать в начале имени или может встретиться в другой части символа, а также возможно ли использование специальных знаков типа "*" или "#", как в функции wcmatch (см. разд. 12.4.5). На рис. 12.20 приведено результирующее окно Справочный список найденных символов (Apropos results) с символами, имеющими префикс "f".

Пункт Окно точек останова (Breakpoints Window) падающего меню Вид (View) открывает окно Точки останова (Breakpoints) (рис. 12.21), используемое в отладке программ.

Рис. 12.20. Окно Справочный список

Рис. 12.21. Окно Точки останова найденных символов

Пункт Окно вывода (Output Window) позволяет открыть окно <Сообщения сборки> (< Builder Ouput>) для вывода сообщений, генерируемых в процессе разработки приложений (рис. 12.22).

Рис. 12.22. Окно <Сообщения сборки>

Пункт Консоль LISP (LISP Console) падающего меню Вид (View) вызывает очень важное окно, называемое Консоль Visual LISP (Visual LISP Console) (рис. 12.23), которое в среде Visual LISP является аналогом зоны командных строк системы AutoCAD. В нем можно вводить выражения AutoLISP, загружать и выполнять функции, а также читать значения переменных. Сюда же Visual LISP выводит свои сообщения.

Рис. 12.23. Окно Консоль Visual LISP

Пункт Обзор базы данных рисунка (Browse Drawing Database) падающего меню Вид (View) имеет подпункты Все объекты (Browse All Entities), Таблицы (Browse Tables), Блоки (Browse Blocks), Набор (Browse Selection) и Расширенные данные (Inquire Extended Data...), при выборе которых вызываются соответствующие окна для просмотра базы данных графических примитивов и неграфических объектов текущего рисунка (рис. 12.24).

Рис. 12.24. Окна обзора базы данных рисунка

Пункт Панели инструментов (Toolbars) падающего меню Вид (View) вызывает диалоговое окно Панели инструментов (Toolbars) (рис. 12.25), которое управляет видимостью пяти панелей среды Visual LISP.

Рис. 12.25. Диалоговое окно Панели инструментов

Рис. 12.26. Падающее меню Проект

Флажки этого окна должны быть установлены около имен тех из пяти панелей (Стандартная (Standard), Поиск (Search), Сервис (Tools), Отладка (Debug), Вид (View)), которые необходимо вывести на экран. Изменения вносятся с помощью кнопок Скрыть все (Hide All), Показать все (Show All), Применить (Apply). Кнопка Закрыть (Close) закрывает диалоговое окно Панели инструментов (Toolbars).

Падающее меню Проект (Project) (рис. 12.26) дает возможность работать с проектами.

Проект - это объединение группы LISP-программ в приложение, работающее в среде системы AutoCAD и компилированное в один файл с расширением fas (возможен вариант, когда каждой из программ создается свой FAS-файл, хотя это менее удобно). Меню Проект (Project) имеет следующие пункты:

  • Новый проект (New Project)
  • Открыть проект (Open Project)
  • Закрыть проект (Close Project)
  • Свойства проекта (Project Properties)
  • Загрузить FAS-файл проекта (Load Project FAS File)
  • Загрузить исходные файлы проекта (Load Project Source Files)
  • Собрать FAS-файл проекта (Build Project FAS)
  • Перекомпилировать FAS-файл проекта (Rebuild Project FAS)

Эти пункты рассмотрены в разд. 12.8.2. Последние (дополнительные) строки в меню показывают имена открытых проектов. Активный проект помечен флажком.

Падающее меню Отладка (Debug) (рис. 12.27) позволяет отлаживать программы в среде Visual LISP.

Это меню имеет такие пункты:

  • Шаг с заходом (Step Into)
  • Шаг с обходом (Step Over)
  • Шаг с выходом (Step Out)
  • Продолжить (Continue)
  • Сброс до верхнего уровня (Reset to Top Level)
  • Выход из текущего уровня (Quit Current Level)
  • Добавить контрольное значение (Add Watch)
  • Результат последнего вычисления (Watch Last Evaluation)
  • Точка останова Вкл/Откл (Toggle Breakpoint)
  • Удалить все точки останова (Clear All Breakpoints)
  • Причина последнего останова (Last Break Source)
  • Команда трассировки (Trace Command)
  • Останов (Stop Once)
  • Останов на ошибке (Break On Error)
  • Анимация (Animate)
  • Прервать вычисления (Abort Evaluation)

Рис. 12.27. Падающее меню Отладка

Эти пункты и соответствующие им операции рассмотрены в разд. 12.8. J.

Падающее меню Сервис (Tools) (рис. 12.28) предназначено для вспомогательных операций.

Рис. 12.28. Падающее меню Сервис (первый вариант)

Если в среде Visual LISP активно окно Консоль Visual LISP (Visual LISP Console), то меню Сервис (Tools) имеет следующие пункты:

  • Режим AutoCAD (AutoCAD Mode)
  • Оформление окна (Window Attributes)
  • Параметры среды (Environment Options)
  • Сохранить параметры (Save Settings)

Пункт Режим AutoCAD (AutoCAD Mode) включает или отключает режим использования окна Консоль Visual LISP (Visual LISP Console) в качестве командной строки системы AutoCAD (появляется подсказка Команда: (Command:)). Это дает возможность вводить команды AutoCAD прямо в окне консоли. Если такой режим установлен, то в меню слева от данного пункта стоит флажок.

Пункт Оформление окна (Window Attributes) состоит из пяти подпунктов:

  • Цвета синтаксических элементов (Syntax Coloring)
  • Настроить текущее (Configure Current)
  • Оформление текущего окна по прототипу (Set Current Window to Prototype)
  • Оформление всех окон по прототипу (Set All Windows to Prototype)
  • Шрифты (Fonts)

Подпункт Цвета синтаксических элементов (Syntax Coloring) доступен только в том случае, если в активном окне находится текст файла, имеющего расширение, отличное от Isp. Тогда вызывается окно Цветовой стиль (Color Style) (на рис. 12.29 показано окно, открытое при работе с DCL-файлом), в котором можно выбрать цветовую гамму текстового редактора, отвечающую одному из предлагаемых вариантов. Подробнее о цветовой гамме текстового редактора рассказано в разд. 12.7.3.

Подпункт Настроить текущее (Configure Current) открывает окно Оформление окна (Window Attributes) (рис. 12.30), в котором можно подкорректиро-вать действующие цветовые установки разных элементов текста. Оформляемые элементы перечислены в раскрывающемся списке.

Рис. 12.29. Окно Цветовой стиль

Рис. 12.30. Окно Оформление окна

Подпункт Оформление текущего окна по прототипу (Set Current Window to Prototype) меняет установки активного окна на установки прототипа, а подпункт Оформление всех окон по прототипу (Set All Windows to Prototype) выполняет ту же операцию над всеми окнами.

Подпункт Шрифты (Fonts) вызывает стандартное диалоговое окно Выбор шрифта (Select Font) (рис. 12.31) для выбора используемых в окнах шрифтов.

Рис. 12.31. Диалоговое окно Выбор шрифта

Пункт Параметры среды (Environment Options) падающего меню Сервис (Tools) имеет три подпункта:

  • Общие параметры (General Options)
  • Параметры форматирования Visual LISP (Visual LISP Format Options)
  • Параметры разметки страницы (Page Setup Options)

Подпункт Общие параметры (General Options) вызывает диалоговое окно Общие параметры (General Options), имеющее вкладки Общие (General) (рис. 12.32) и Диагностические (Diagnostic) (рис. 12.33), позволяющие менять различные настройки среды Visual LISP.

Подпункт Параметры форматирования Visual LISP (Visual LISP Format Options) раскрывает диалоговое окно Опции форматирования (Format options) (рис. 12.34), управляющее установками форматирования для текстового редактора Visual LISP.

Третий подпункт - Параметры разметки страницы (Page Setup Options) пункта Параметры среды (Environment Options) вызывает диалоговое окно Параметры страницы (Page Setup) (рис. 12.35) для операций вывода текстов на печать из среды Visual LISP.

Рис. 12.32. Диалоговое окно Общие параметры, вкладка Общие

Рис. 12.33. Диалоговое окно Общие параметры, вкладка Диагностические

Пункт Сохранить параметры (Save Settings) падающего меню Сервис (Tools) позволяет сохранять настройки рабочего стола Visual LISP (последние открытые окна, их параметры и т. п.). Можно задать автоматическое сохранение настроек, установив соответствующие флажки в поле РАБОЧИЙ СТОЛ (DESKTOP) вкладки Общие (General) диалогового окна Общие параметры (General Options) (см. рис. 12.32).

Рис. 12.34. Диалоговое окно Опции форматирования

Рис. 12.35. Диалоговое окно Параметры страницы

Если в среде Visual LISP активно окно с текстом редактируемой программы, то меню Сервис (Tools) (рис. 12.36) имеет следующие дополнительные пункты:

  • Загрузить выделенный фрагмент (Load Selection)
  • Загрузка текста в редактор (Load Text in Editor)
  • Проверить выделенный фрагмент (Check Selection)
  • Проверить текст в редакторе (Check Text in Editor)
  • Форматировать во фрагменте (Format code in Selection)
  • Форматировать код в редакторе (Format code in Editor)
  • Инструменты интерфейса (Interface Tools)

Первые шесть из перечисленных пунктов позволяют загружать для выполнения, проверять или форматировать как текст программы, так и его выделенную часть. Работа этих пунктов рассмотрена в разд. 12.7.3 и 12.8.1. Пункт Инструменты интерфейса (Interface.Tools) имеет два подпункта:

  • Просмотр DCL из фрагмента (Preview DCL in Selection)
  • Просмотр DCL из редактора (Preview DCL in Editor)

Эти подпункты позволяют загружать для выполнения редактируемый DCL-файл или его выделенную часть.

Падающее меню Окно (Window) (рис. 12.37) по структуре аналогично меню с аналогичным наименованием других приложений Windows.

Рис. 12.36. Падающее меню Сервис (второй вариант)

Рис. 12.37. Падающее меню Окно

Оно позволяет управлять взаимным расположением нескольких одновременно открытых окон в среде Visual LISP. Пункт Активизировать AutoCAD (Activate AutoCAD) данного меню сворачивает диалоговое окно Visual LISP для AutoCAD (Visual LISP for AutoCAD) и делает временно доступным основное окно системы AutoCAD (например, для выполнения в рисунке каких-нибудь построений). В нижней части падающего меню Окно (Window) приводится список открытых окон и флажком помечено активное окно.

Последнее падающее меню Справка (Help) (рис. 12.38) состоит из двух пунктов и выполняет справочные функции.

Рис. 12.38. Падающее меню Справка

 

12.7.2. Обзор панелей инструментов

В оболочку Visual LISP входят пять панелей инструментов:

  • Стандартная (Standard)
  • Поиск (Search)
  • Сервис (Tools) (в плавающем положении она называется Инструменты (Tools), см. рис. 12.7)
  • Отладка (Debug)
  • Вид (View)

Как видно из данного перечня, наименования панелей похожи на наименования рассмотренных выше падающих меню. Назначение панелей также аналогично назначению соответствующих падающих меню.

В панель инструментов Стандартная (Standard) (рис. 12.39) входят следующие кнопки (слева направо):

  • Новый файл (New file)
  • Открыть файл (Open file)
  • Сохранить файл (Save file)
  • Печать (Print)
  • Вырезать (Cut)
  • Копировать (Сору)
  • Вставить (Paste)
  • Отменить (Undo)
  • Повторить (Redo)
  • Дописать слово (Complete word)

Рис. 12.39. Панель инструментов Стандартная

Девять первых кнопок этой панели аналогичны одноименным кнопкам панели инструментов Стандартная (Standard) системы AutoCAD. Последняя кнопка Дописать слово (Complete word) соответствует пункту Дописать словом из списка (Complete Word by Apropos) падающего меню Поиск (Search), позволяющему закончить начатое слово элементом списка стандартных символов.

Панель инструментов Поиск (Search) (рис. 12.40) выполняет функции, аналогичные функциям падающего меню Поиск (Search).

Рис. 12.40. Панель инструментов Поиск

В нее входят семь следующих кнопок:

  • Найти (Find)
  • Заменить (Replace)
  • Поиск строки на панели инструментов (Find toolbar string)
  • Закладка Вкл/Откл (Toggle bookmark)
  • Следующая закладка (Next bookmark)
  • Предыдущая закладка (Previous bookmark)
  • Удаление всех закладок (Clear all bookmarks)

Назначение всех этих кнопок, кроме третьей, аналогично назначению соответствующих пунктов и подпунктов падающего меню Поиск (Search). Кнопка Поиск строки на панели инструментов (Find toolbar string) работает вместе с раскрывающимся списком, находящимся в панели инструментов Поиск (Search) и выполняет поиск символа, имя которого выбрано в этом списке или введено в список с клавиатуры.

Панель инструментов Сервис (Tools) (рис. 12.41) имеет девять следующих кнопок:

  • Загрузка активного окна редактирования (Load active edit window)
  • Загрузка выделенного фрагмента (Load selection)
  • Проверка содержимого окна редактора (Check edit window)
  • Проверка выделенного фрагмента (Check selection)
  • Форматирование содержимого окна редактирования (Format edit window)
  • Форматирование выделенного фрагмента (Format selection)
  • Закомментировать блок (Comment block)
  • Раскомментировать блок (Uncomment block)
  • Справка (Help)

Рис. 12.41. Панель инструментов Сервис

Первые шесть пунктов панели аналогичны первым шести пунктам падающего меню Сервис (Tools), если пользователь с помощью редактора работает с текстом программы или ее фрагментом (см. рис. 12.36).

Пункты Закомментировать блок (Comment block) и Раскомментировать блок (Uncomment block) позволяют легко вставлять (с помощью точек с запятой) или снимать комментарии в выделенных строках текста программы. Пункт Справка (Help) служит для получения справочной информации.

Панель инструментов Отладка (Debug) (рис. 12.42) имеет следующие кнопки:

  • Шаг с заходом (Step into)
  • Шаг с обходом (Step over)
  • Шаг с выходом (Step out)
  • Продолжить (Continue)
  • Выйти (Quit)
  • Сброс (Reset)
  • Точка останова Вкл/Откл (Toggle breakpoint)
  • Добавить контрольное значение (Add watch)
  • Последний останов (Last break)

Рис. 12.42. Панель инструментов Отладка

Кроме того, в процессе выполнения программы в отладочном режиме, с точками остановов, в панели появляется последняя кнопка (на рис. 12.42 она показана, но в обычном режиме эта кнопка не отображается). Кнопка показывает, где находится курсор во время текущего останова (перед скобками или после).

Режимы отладки программ рассмотрены в разд. 12.8.1. В панель инструментов Вид (View) (рис. 12.43) входят следующие кнопки:

  • Активизация AutoCAD (Activate AutoCAD)
  • Выбрать окно (Select window)
  • Консоль Visual LISP (Visual LISP Console)
  • Изучить (Inspect)
  • Трассировка (Trace)
  • Окно отладки символов (Symbol service)
  • Справочный список (Apropos)
  • Окно контрольных значений (Watch window)

Рис. 12.43. Панель инструментов Вид

Наименования кнопок говорят о том, что они выполняют операции, закрепленные за рассмотренными выше различными пунктами падающих меню: Режим AutoCAD (AutoCAD Mode) меню Сервис (Tools), выбор окна с помощью списка окон меню Окно (Window), Консоль LISP (LISP Console) меню Вид (View), Изучить (Inspect) меню Вид (View), Стек трассировки (Trace Stack) меню Вид (View), Инспектор символов (Symbol Service) меню Вид (View), Параметры справочного списка (Apropos Window) меню Вид (View), Окно контрольных значений (Watch Window) меню Вид (View).

 

12.7.3. Написание программ в текстовом редакторе среды Visual LISP

В среде Visual LISP можно открывать в своем окне и редактировать текстовые файлы следующих типов: LISP-программ (с расширением Isp), DCL-фаилы диалоговых окон (с расширением del), SQL-файлы операций с базами данных (с расширением sql), файлы программ на языке C++ (с расширением с). Включенный в состав среды текстовый редактор оказывает существенную помощь в написании файлов этих типов, поскольку уже в процессе ввода текста выполняет синтаксический анализ, выделяя символы, соответствующие скобкам, операторам, операндам, комментариям и т. д. Результаты своего синтаксического анализа редактор отображает цветом букв набранного текста. Выбор настройки редактора в соответствии с типом файла можно сделать с помощью пункта Оформление окна (Window Attributes), Цвета синтаксических элементов (Syntax Coloring) падающего меню Сервис (Tools) (см. рис. 12.29). По умолчанию редактор настроен на работу с текстами LISP-программ.

Цветовая гамма, обычно используемая для синтаксического анализа программ на языке LISP, следующая:

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

При желании можно внести изменения в цветовую палитру с помощью пункта Оформление окна (Window Attributes), Настроить текущее (Configure Current) падающего меню Сервис (Tools) (см. рис. 12.30).

Пункт Параметры среды (Environment Options) падающего меню Сервис (Tools) тоже может помочь в установлении большого количества удобств для конкретного пользователя.

Незаменимым средством быстрого комментирования выделенного участка текста и снятия комментариев являются кнопки Закомментировать блок (Comment block) и Раскомментировать блок (Uncomment block) панели инструментов Сервис (Tools).

Синтаксическая проверка текста всего открытого файла или выделенного фрагмента может быть выполнена с помощью пунктов Проверить выделенный фрагмент (Check Selection) и Проверить текст в редакторе (Check Text in Editor) падающего меню Сервис (Tools) или аналогичных кнопок в панели Сервис (Tools). Для проверки соответствия закрывающих и открывающих скобок хорошо пользоваться пунктом Проверка скобок (Parantheses Matching) падающего меню Правка (Edit).

При перезаписи файла с расширением lsp Visual LISP создает копию предыдущего состояния файла (копии присваивается расширение _ls).

 

Предыдущий раздел ! | Следующий раздел !

©2002 Малинин В.В. - редактор
электронной версии
©2002 ЦИТ СГГА - издатель
Все права защищены.