Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г

.pdf
Скачиваний:
182
Добавлен:
09.04.2015
Размер:
9.06 Mб
Скачать

Использование Visual LISP

471

Контекстное меню

Если щелкнуть правой кнопкой мыши в окне текстового редактора или нажать клавиши <Shift+F10>, рядом с курсором появится контекстное меню, показанное на рис. 13.11.

Рис. 13.11. Контекстное меню, открывающееся по щелчку правой кнопкой мыши

Контекстное меню содержит следующие команды: Cut, Copy, Paste, Clear Console Window, Find, Inspect, Add Watch, Apropos Window, Symbol Service, Undo, Redo, AutoCAD Mode и Toggle Console Log. Краткое описание функций контекстного меню приведено в следующей таблице.

Функция контекстного меню

Описание функции

Cut

Перемещает выделенный текст в буфер обмена

Copy

Копирует выделенный текст в буфер обмена

Paste

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

 

жения курсора

Find

Выполняет поиск выделенного текста

Go to Last Edited

Перемещает курсор к месту последнего редактирования

Toggle Breakpoint

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

 

курсора

Inspect

Открывает диалоговое окно Inspect

Add Watch

Открывает диалоговое окно Add Watch

Apropos Window

Открывает диалоговое окно Apropos Window

Symbol Service

Открывает диалоговое окно Symbol Service

Undo

Отменяет последнюю выполненную операцию

Redo

Отменяет выполнение команды Undo

 

 

Средства форматирования Visual LISP

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

472

Глава 13

Запуск форматтера

С помощью форматтера можно отформатировать весь текст, введенный в окно редактора, или ограничиться только выделенными фрагментами текста. Во время форматирования окно текстового редактора должно быть активным. Если это условие не выполняется, активизируйте окно редактора, щелкнув мышью в области окна. Чтобы отформатировать весь текст, щелкните на кнопке Format edit window, которая находится на панели инструментов Tools, или выберите команду Format code in Editor из меню Tools. Чтобы отформатировать фрагмент текста, выделите его и щелкните на кнопке Format selection на панели инструментов Tools или выберите команду Format code in Selection из меню Tools. Меню Tools и панель инструментов Tools показаны на рис. 13.12.

Рис. 13.12. Использование опций Format selection и Format edit window

Форматирование комментариев

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

Формат комментариев

Описание

; Single-Semicolon

Текст комментария располагается с отступом, величина

 

которого определяется опцией форматирования Single-

 

Semicolon comment indentation

;; Current-Column

Строка комментария структурируется точно так же, как и

 

предыдущая строка программного кода

;;; Heading или 0-Column

Строка комментария располагается без отступа

;| Inline |;

Строка комментария структурируется точно так же, как и

 

любое другое выражение

;_ Function-Closing

Строка комментария структурируется точно так же, как и

 

предыдущая функция, что обеспечивается опцией форма-

 

тирования Insert form-closing comment

Использование Visual LISP

473

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

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

Изменение опций форматирования

Для того чтобы изменить параметры форматирования, воспользуйтесь опциями диалогового окна Format options, показанного на рис. 13.14. Чтобы открыть это диалоговое окно, выберите команду Tools Environment Options Visual LISP Format Options. Для получения доступа к другим опциям форматирования необходимо развернуть окно, щелкнув на кнопке More options (рис. 13.15).

Отладка программы

Редко бывает так, что написанная программа сразу начинает работать. А если и работает, то далеко не всегда выполняет все необходимые операции. Причиной этого могут быть допущенная синтаксическая или орфографическая ошибка, пропущенные круглые скобки или неправильно используемые функции. Выявление ошибок отнимает немало времени и является довольно сложной задачей. Visual LISP содержит несколько инструментальных средств, упрощающих процесс поиска ошибок и отладку написанных программ. Проверьте, выведена ли на экран панель инструментов Debug. Если эта панель отсутствует, откройте диалоговое окно Toolbars, выбрав команду Toolbars из меню View, а затем установите флажок опции Debug. После этого щелкните на кнопке Apply и закройте диалоговое окно, щелкнув на кнопке Close. Панель инструментов Debug появится на экране. На рис. 13.16 показана эта панель со всплывающими подсказками к имеющимся инструментам.

474

Глава 13

Рис. 13.14. Диалоговое окно Format Options

Рис. 13.15. Диалоговое окно Format Options, содержащее дополнительные опции форматирования

На уровень вниз

 

 

 

 

 

 

Индикатор

отладки

На уровень

вверх

 

 

 

 

 

Последний

разрыв

 

 

 

 

 

 

 

 

 

 

 

 

 

Пропустить

 

 

Контрольная

 

точка

 

Продолжить

 

Точка разрыва

 

 

 

 

 

 

 

Восстановить

 

 

 

 

Выход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 13.16. Средства отладки на панели инструментов Debug

Использование Visual LISP

475

1.Чтобы получше познакомиться со средствами отладки, введите следующую программу в окно текстового редактора Visual LISP, а затем сохраните ее в виде файла triang2.lsp.

;;;С помощью этой программы можно начертить треугольник и дугу (defun tr2 ()

(setq p1 (getpoint "\n Enter first point p1: ")) (setq p2 (getpoint "\n Enter second point p2: ")) (setq p3 (getpoint "\n Enter third point p3: ")) (command "arc" p1 p2 p3)

(command "line" p1 p2 p3 "c")

)

2.Чтобы отформатировать введенный код, щелкните на кнопке Format edit window на панели инструментов Tools или выберите команду Format code in Editor из меню

Tools.

3.Загрузите программу, щелкнув на кнопке Load active edit window на панели инструментов Tools. Можно также загрузить программу, выбрав команду Load Text in Editor из меню Tools.

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

(setq p2 (getpoint "\n Enter second point p2: "))|

5.Перейдите в окно консоли Visual LISP Console и введите имя функции в строку приглашения. После этого запустите программу, нажав клавишу <Enter>.

_$ (tr2)

На экране появится окно программы AutoCAD. При этом в командной строке отобразятся два первых приглашения на ввод соответствующих данных (Enter first point p1: Enter second point p2:). Когда вы определите указанные точки, на экране появится окно Visual LISP. Обратите внимание, что строка, в конце которой находится контрольная точка, выделена синим цветом, как показано на рис. 13.17.

Рис. 13.17. Чтобы начать выполнение программы, щелкните на кнопке Step into

6.Щелкните на кнопке Step into, которая находится на панели инструментов Debug, или выберите команду Step into из меню Debug. Можно также вызвать команду Step into, нажав клавишу <F8>. Программа будет выполнена до следующего вы-

476 Глава 13

ражения, содержащегося в круглых скобках. Это выражение (рис. 13.18) выделено синим цветом. Обратите внимание на положение курсора. Он находится прямо перед выражением (setq p3 (getpoint "\n Enter third point p3: ")).

Рис. 13.18. Если щелкнуть на кнопке Step into еще раз, курсор “перепрыгнет” к началу следующего выражения

7. Щелкните на кнопке Step into еще раз. Курсор переместится в правую сторону и выделит выражение (setq p3 (getpoint "\n Enter third point p3: ")), как показано на рис. 13.19.

8.Щелкните на кнопке Step into еще раз. На экране появится окно программы AutoCAD, в командной строке которой отобразится третье приглашение (Enter

third point p3:). Укажите третью точку и на экране снова появится окно Visual LISP. Обратите внимание на положение курсора. Теперь он находится после выражения (getpoint "\n Enter third point p3: ")).

Рис. 13.19. Если щелкнуть на кнопке Step into еще раз, в правой части пиктограммы Step Indicator появится вертикальная черта

9.Чтобы продолжить выполнение программы, щелкните на кнопке Step into еще раз. При этом будет выделена полностью вся строка, а курсор переместится в конец выражения (getpoint "\n Enter third point p3: ")).

10.Щелкните на кнопке Step into еще раз. Будет выделена следующая строка программы, а курсор переместится в начало выражения.

11.Чтобы пропустить выделенное выражение, щелкните на кнопке Step over, которая находится на панели инструментов Debug, или выберите команду Step over из меню Debug. Для вызова этой команды можно также воспользоваться клавишами <Shift+F8>.

12.Щелкайте на кнопке Step over до тех пор, пока не пропустите все выражения и не выделите всю программу. При этом вы заметите, что данная программа будет выполняться в окне AutoCAD.

Использование Visual LISP

477

Общие рекомендации по написанию программ AutoLISP

1.Встроенные функции и аргументы следует отделять пробелами.

2.Аргументы функций должны быть разделены пробелами.

3.Каждая функция должна начинаться с открывающей круглой скобки.

4.Каждая функция должна заканчиваться закрывающей круглой скобкой.

Пример 1

Напишите программу на языке LISP, с помощью которой вы сможете нарисовать I-образную фигуру (сечение двутавровой балки), показанную на рис. 13.20. Начальной точкой является Р1. Координаты точки Р1, высота балки, ширина и толщина полок, а также толщина стенки определяются пользователем и должны вводиться с помощью командной строки.

Шаг 1: разработка алгоритма программы

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

Исходные данные

P1 — начальная точка;

L — высота балки;

W — ширина полки;

T1 — толщина полки;

T2 — толщина стенки.

Выходные данные

• Чертеж двутавровой балки (I-образной фигуры), показанный на рис. 13.20.

Рис. 13.20. Размеры сечения двутавровой балки для примера 1

478

Глава 13

Обработка данных

Определите координаты вершин данной фигуры: р1, р2, р3, р4, р5, р6, р7, р8, р9, р10, р11 и р12.

Шаг 2: написание программы Visual LISP

Откройте окно редактора Visual LISP. Для этого выберите команду Tools AutoLISP Visual LISP Editor или введите выражение VLIDE в командную строку. Затем откройте окно текстового редактора, выбрав команду New File из меню File. Введите в окно редактора следующий текст:

(defun isec ()

(setq p1 (getpoint "\n Enter the starting point of the I-section: ") l (getdist "\n Enter the length of the I-section: ")

w (getdist "\n Enter the width of the I-section: ") t1 (getdist "\n Enter the thickness of the flange: ") t2 (getdist "\n Enter the thickness of the web: ") p2 (list (+ (car p1) w) (cadr p1))

p3 (list (car p2) (+ (cadr p2) t1))

p4 (list (- (car p3) (/ (- w t2) 2)) (cadr p3)) p5 (list (car p4) (+ (cadr p4) (-l (* 2 t1)))) p6 (list (car p3) (cadr p5))

p7 (list (car p6) (+ (cadr p6) t1))

p8 (list (car p1) (+ (cadr p1) l))

p9 (list (car p8) (- (cadr p8) t1))

p10 (list (- (car p5) t2) (cadr p5))

p11 (list (- (car p4) t2) (cadr p4))

p12 (list (car p1) (cadr p11))

)

(command "PLINE" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p1 "")

)

Шаг 3: загрузка и запуск программы Visual LISP

Выберите команду Save или Save As из меню File и сохраните файл программы под именем isec.lsp. Чтобы загрузить созданную программу, выберите команду Load Text in Editor из меню Tools или щелкните на кнопке Load active edit window, которая находится на панели инструментов Tools. В окне консоли Visual LISP Console появится сообщение об успешной загрузке данной программы. Если окно Visual LISP Console отсутствует, выведите его на экран, выбрав команду Tile Horizontally из меню Window. Если в программе будут обнаружены какие-либо ошибки, на экране появится соответствующее сообщение.

Теперь можете заняться пошаговой отладкой программы, выполняя процедуры, описанные в разделе “Отладка программы”. Чтобы привести в соответствие количество открывающих и закрывающих скобок, щелкните на кнопке Format Edit Window, которая находится на панели инструментов Tools. Характер и причины возможных ошибок описываются в разделе “Коды ошибок и сообщения об ошибках”, который находится в конце этой главы. Чтобы запустить программу, введите имя функции (isec) в строку приглашения консоли после знака _$. Не забывайте, что имя функции необходимо указывать в круглых скобках. Когда вы введете имя функции и нажмете клавишу <Enter>, в командной строке программы AutoCAD появится приглашение на ввод данных, определяющих геометрические параметры двутавровой балки. После того как вы введете все необходимые данные, на экране отобразится I-образная фигура, построенная по вашим размерам.

Использование Visual LISP

479

Совет

1. Для написания программы можно воспользоваться любым текстовым редактором, на- пример таким как Notepad. Чтобы загрузить программу, введите команду APPLOAD в командную строку, как описывается в главе, посвященной языку AutoLISP.

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

Шаг 4: использование функции POLAR в программе Visual LISP

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

В этой программе d1 — расстояние между точками Р2 и Р3, d2 — расстояние между точками Р3 и Р4, а d3 — расстояние между точками Р4 и Р5. Учтите, что функция dtr используется для преобразования градусов в радианы.

Ниже приведен листинг программы, в которой используется функция POLAR.

(defun dtr (a)

(* a (/ pi 180.0))

)

(defun isec ()

(setq p1 (getpoint "\n Enter the starting point of the I-section: ") l (getdist "\n Enter the length of the I-section: ")

w (getdist "\n Enter the width of the I-section: ") t1 (getdist "\n Enter the thickness of the flange: ") t2 (getdist "\n Enter the thickness of the web: ")

)

(setq d1 t1

d2 (- (/ w 2.0) (/ t2 2.0))

d3 (- l (* 2.0 t1))

)

(setq p2 (polar p1 (dtr 0) w) p3 (polar p2 (dtr 90) d1) p4 (polar p3 (dtr 180) d2) p5 (polar p4 (dtr 90) d3) p6 (polar p5 (dtr 0) d2) p7 (polar p6 (dtr 90) d1) p8 (polar p7 (dtr 180) w) p9 (polar p8 (dtr 270) d1) p10 (polar p9 (dtr 0) d2)

p11 (polar p10 (dtr 270) d3)

p12 (polar p11 (dtr 180) d2)

)

(command "PLINE" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 "")

)

480 Глава 13

Пример 2

Напишите программу на языке Visual LISP, с помощью которой вы сможете построить трехмерную модель двутавровой балки (рис. 13.21) путем “выдавливания” двумерного компонента (в качестве которого используется поперечное сечение объекта, описанное в примере 1). При выполнении этой программы необходимо определить несколько дополнительных параметров: направление взгляда (vpoint или v), высота (h) и угол (a) выдавливания.

Рис. 13.21. Трехмерная модель двутавровой балки, описанной в примере 1

Шаг 1: разработка алгоритма программы

Кроме исходных данных, используемых в примере 1, необходимо определить несколько дополнительных параметров, таких как проекция (Vpoint), высота выдавливания (Extrusion Height) и угол выдавливания (Angle of Extrusion). Также необходимо ввести команды, позволяющие выбрать соответствующую проекцию, выполнить выдавливание компонента и масштабирование изображения. Проекция (направление взгляда), высота и угол выдавливания определяются значением переменных v, h и a. Величина угла определяется с помощью функции getreal, которая позволит программе принимать углы, выраженные в десятичных градусах. Функция getangle для этого не подходит, так как она возвращает величину угла в радианах. Угол выдавливания, требуемый для выполнения команды EXTRUDE, должен задаваться в градусах.

Шаг 2: написание программы Visual LISP

Чтобы открыть окно Visual LISP, выберите команду Tools AutoLISP Visual LISP Editor или введите выражение VLIDE в командную строку. Затем откройте окно тестового редактора, выбрав команду New File из меню File. Теперь напишите программу, листинг которой приведен в следующем абзаце, или введите файл LISP из примера 1 и добавьте в него несколько дополнительных строк (новые строки выделены жирным шрифтом).

(defun dtr (a)

(* a (/ pi 180.0))) (defun isec3d ()

(setq p1 (getpoint "\n Enter the starting point of the I-section: ") l (getdist "\n Enter the length of the I-section: ")

Соседние файлы в папке Книги_AutoCad_2