Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г
.pdf
Использование 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 показана эта панель со всплывающими подсказками к имеющимся инструментам.
Использование 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.
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: ")
