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

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

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

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

451

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

Шаг 1: написание программы AutoLISP

;Эта программа чертит крепежные отверстия, расположенные ;по окружности заданного диаметра

;

(defun c:bc1() (graphscr)

(setvar "cmdecho" 0)

(setq cr(getpoint "\n Enter center of Bolt-Circle: ")) (setq d(getdist "\n Dia of Bolt-Circle: "))

(setq n(getint "\n Number of holes in Bolt-Circle: ")) (setq a(getangle "\n Enter start angle: "))

(setq dh(getdist "\n Enter diameter of hole: ")) (setq inc(/ (* 2 pi) n))

(setq ang 0) (setq r (/ dh 2))

(while (< ang (* 2 pi))

(setq p1 (polar cr (+ a inc) (/ d 2))) (command "circle" p1 r)

(setq a (+ a inc)) (setq ang (+ ang inc))

)

(setvar "cmdecho" 1) (princ)

)

Шаг 2: загрузка программы AutoLISP

Сохраните файл, а затем загрузите созданную программу, используя для этого команду APPLOAD.

Функция repeat

Функция repeat вычисляет выражение n-е количество раз, как определено этой функцией (рис. 12.25). Значение переменной n должно быть целым числом. Функция repeat имеет следующий формат:

repeat n,

где

n — целое число, которое определяет, сколько раз должно быть выполнено указанное выражение.

Пример

(repeat 5

(setq x (+ x 10))

452

Глава 12

Рис. 12.25. Функция repeat

Примечание

AutoCAD позволяет автоматически загружать определенные программы AutoLISP при каждом запуске AutoCAD. Например, если во время работы над проектом была загружена какая-нибудь программа AutoLISP, то эта программа автоматически загрузится при открытии другого чертежа. Чтобы воспользоваться этой возможностью, добавьте имя соответствующего файла к списку Startup Suit, который находится в диалоговом окне Load/Unload Application (Tools Load Application или Tools AutoLISP Load). Для получения более подробной информации об опциях диалогового окна Load/Unload Application обратитесь к одному из предыдущих разделов.

Пример 10

Напишите программу на языке AutoLISP, с помощью которой вы сможете начертить определенное количество концентрических окружностей. Эта программа должна также выводить приглашение, которое позволит вам определить координаты центра этих окружностей, указать начальный радиус и величину приращения радиуса (рис. 12.26).

Рис. 12.26. Блок-схема для примера 10

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

453

Ниже приведен листинг программы AutoLISP для примера 10.

;Эта программа позволяет начертить заданное количество ;концентрических окружностей, используя функцию repeat. (defun c:concir()

(graphscr)

(setvar "cmdecho" 0)

(setq c (getpoint "\n Enter center point of circles: ")) (setq n (getint "\n Enter number of circles: "))

(setq r (getdist "\n Enter radius of first circle: ")) (setq d (getdist "\n Enter radius increment: ")) (repeat n

(command "circle" c r) (setq r (+ r d))

)

(setvar "cmdecho" 1) (princ)

)

Задания для самопроверки

Ответьте на следующие вопросы и сравните свои ответы с правильными ответами, приведенными в конце этой главы.

1.AutoLISP является ведущим языком программирования для ________.

2.Интерпретатор языка AutoLISP обычно входит в комплект программного обеспечения программы ________.

3.Функция ________ проверяет равенство указанных элементов.

4.В языке AutoLISP имеется целый ряд ________ функций.

5.Если встроенные функции используются вместе с функцией setq, то при первой возможности эти функции будут ________.

6.При использовании функции LOAD файловое имя и опциональное путевое имя программы AutoLISP должны быть указаны в ________.

7.Для загрузки файлов LISP используется команда ________.

8.Функция strcase преобразует символы, содержащиеся в строке, в ________.

9.Функция progn может использоваться вместе с функцией ________.

10.Функция setq используется для присваивания значений ________.

454 Глава 12

Повторение пройденного материала

Ответьте на следующие вопросы. 1. Заполните пропуски:

Command: (+ 2 30 5 50)

возвращает ________.

Command: (+ 2 30 4 55.0)

возвращает ________.

(–

20

40)

 

 

 

возвращает ________.

(–30.0

40.0)

 

 

возвращает ________.

(* 72 2 3 2.0)

 

 

возвращает ________.

(*

7

–5.5)

 

 

 

возвращает ________.

(/

299

–5)

 

 

 

возвращает ________.

(/

–200

9.0)

 

 

возвращает ________.

(1

9)

 

 

 

возвращает ________.

(1

–18.5)

 

 

возвращает ________.

(abs

–90)

 

 

 

возвращает ________.

(abs

–27.5)

 

 

возвращает ________.

(sin

pi)

 

 

 

возвращает ________.

(sin

1.5)

 

 

 

возвращает ________.

(cos

pi)

 

 

 

возвращает ________.

(cos

1.2)

 

 

 

возвращает ________.

(atan

1.1

0.0)

 

 

возвращает ________ радиан.

(atan

–0.4

0.0)

 

 

возвращает ________ радиан.

(antgos

1.5708

0

5)

возвращает ________.

(antgos

–1.5708

0

3)

возвращает ________.

(<

"x"

"y")

 

 

возвращает ________.

(>=

80

90

79)

 

 

возвращает ________.

2.Функция ________ создает паузу, которая дает вам возможность ввести координаты точки X и Y (или X, Y и Z).

3.Функция ________ используется для вызова стандартных команд AutoCAD во время выполнения программы AutoLISP.

4.В выражениях AutoLISP имена и опции команд AutoCAD должны указываться в кавычках. (Да/Нет)

5.Функция getdist создает паузу, которая позволяет определить ________ между двумя точками, а затем возвращает введенное значение в виде вещественного числа.

6.Функция ________ присваивает значение системной переменной AutoCAD. Имя системной переменной должно указываться в ________.

7.Функция cadr возвращает второй элемент списка, последовательно выполняя две операции: ________ и ________.

8.Функция ________ печатает на экране новую строку, т.е. выполняет ту же операцию, что и выражение \n.

9.Функция ________ создает паузу, которая позволяет пользователю определить величину угла, а затем возвращает значение угла в радианах.

10.Функция ________ всегда измеряет угол против часовой стрелки, начиная от положительной оси Х.

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

455

11.Функция ________ создает паузу, которая позволяет ввести целое число. Эта функция всегда возвращает целое число, что происходит даже тогда, когда введенное число является вещественным.

12.Функция _________ позволяет вывести значение системной переменной AutoCAD.

13.Функция ________ позволяет определить точку, расположенную под указанным углом и на заданном расстоянии от данной точки.

14.Функция ________ извлекает квадратный корень из указанного числа, а затем возвращает полученное значение в виде вещественного числа.

15.Функция ________ преобразует вещественное число в строковое выражение и возвращает его в виде текстовой строки.

16.Функция if проверяет заданное условие (> num1 num2). Если это условие выполняется, функция if возвращает значение ________; если условие не выполняется, эта функция возвращает значение ________.

17.Функция _______ может использоваться вместе с функцией if для вычисления сразу нескольких выражений.

18.Функция while проверяет выполнение заданного условия. Если условие выполняется (возвращаемое значение не равно “nil”), то операция, указанная после оператора while, ________ до тех пор, пока проверочное выражение не возвратит значение ________.

19.Функция repeat вычисляет выражение n-е количество раз, как определено этой функцией. Значение переменной n должно быть целым числом. (Да/Нет)

Упражнения

Упражнение 6 (Общее)

Напишите программу на языке AutoLISP, с помощью которой вы сможете начертить три концентрических окружности с центром в точке С1 и диаметрами D1, D2 и D3 (рис. 12.27). Программа должна также вывести приглашение, которое позволит вам ввести координаты точки С1 и диаметры окружностей D1, D2 и D3.

Рис. 12.27. Концентрические окружности с диаметрами D1, D2 и D3

456 Глава 12

Упражнение 7 (Общее)

Напишите программу на языке AutoLISP, с помощью которой вы сможете провести линию от точки Р1 до точки Р2 (рис. 12.28). Линия Р1Р2 образует с положительной осью Х угол А. Расстояние между точками Р1 и Р2 равно L. Диаметр окружностей равен D1 (D1 = L/4).

Рис. 12.28. Окружности и линия, проведенная под углом А к положительной оси Х

Упражнение 8 (Общее)

Напишите программу на языке AutoLISP, с помощью которой вы сможете начертить равнобедренный треугольник Р1Р2Р3 (рис.12.29). Эта программа должна также вывести приглашение, которое позволит вам ввести координаты вершины Р1, длину основания L1 и угол при основании А.

Рис. 12.29. Равнобедренный треугольник

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

457

Упражнение 9 (Общее)

Напишите программу, с помощью которой вы сможете нарисовать шпоночный паз с проведенными осевыми линиями. Программа должна вывести приглашение, которое позволит вам определить длину и ширину паза (2R), ввести угол наклона осевой линии, а также указать имя слоя, содержащего осевые линии (рис. 12.30).

Рис. 12.30. Шпоночный паз длиной L и радиусом R

Упражнение 10 (Общее)

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

Рис. 12.31. N-е число линий, находящихся друг от друга на расстоянии S

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

1 — системы искусственного интеллекта, 2 — AutoCAD, 3 — /=, 4 — встроенных, 5 — переопределены, 6 — двойных кавычках, 7 APPLOAD, 8 — прописные или строчные буквы, 9 if, 10 — переменным.

Глава 13

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

Цель занятия

Познакомившись с материалом этой главы, вы научитесь:

работать с Visual LISP в программе AutoCAD;

работать с текстовым редактором Visual LISP;

загружать и запускать программы Visual LISP;

загружать имеющиеся файлы AutoLISP;

использовать консоль Visual LISP;

изменять опции форматирования и работать с форматтером Visual LISP;

отлаживать программы Visual LISP и отслеживать значения переменных.

460 Глава 13

Visual LISP

Язык программирования Visual LISP является инструментом дальнейшего расширения возможностей настройки AutoCAD. Программа AutoCAD версии 2.0 появилась в середине 1980-х годов. С тех пор пользователи начали применять язык AutoLISP для написания приложений, позволяющих создавать чертежи для различных отраслей промышленности. В их число входят разработка документации для проведения ремонтностроительных работ, проектирование машин и механизмов, разработка электрических цепей, систем кондиционирования воздуха, штампов и приспособлений для листовой штамповки и многое другое. Тем не менее, язык AutoLISP имеет определенные ограничения. Например, при написании программы с помощью текстового редактора проверить правильность использования круглых скобок, функций и системных переменных AutoCAD довольно сложно. Не менее проблематичным является и выявление ошибок, так как трудно определить, что происходит при выполнении программы и что приводит к появлению тех или иных ошибок. Многие программисты вводят в программу ряд дополнительных функций, используемых для проверки значений переменных на разных стадиях выполнения программы. Когда отладка программы завершается, эти функции удаляются или преобразуются в комментарии. Форматирование программного кода и равномерное распределение круглых скобок также относятся к числу проблем, возникающих при традиционном программировании на языке AutoLISP.

Visual LISP был разработан для упрощения и повышения эффективности программирования. В этом языке имеются собственные средства форматирования и мощный текстовый редактор, который поддерживает цветовое кодирование круглых скобок, имен функций, переменных и других компонентов программы. Имеющиеся средства форматирования (форматтер) позволяют сохранить программный код в удобочитаемом формате. Кроме этого, существует средство наблюдения, с помощью которого вы сможете отслеживать значения переменных и выражений, используемых в программе. Редактор Visual LISP содержит также интерактивную консоль с развитыми логическими функциями, которая значительно упрощает программирование на этом языке. Кроме этого, он предоставляет контекстно-зависимую справку по используемым функциям AutoCAD и поддерживает возможность поиска соответствующих символьных имен. Существующие средства отладки упрощают выявление и исправление допущенных ошибок, а также проверку исходного кода. Эти и другие возможности делают Visual LISP наиболее предпочтительным средством для написания программ на языке AutoLISP. Редактор Visual LISP, поддерживаемый программой AutoCAD, состоит из нескольких собственных окон. Тем не менее, не запустив AutoCAD, вы не сможете работать с Visual LISP.

Знакомство с Visual LISP

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

Запуск редактора Visual LISP

Главное меню: Tools AutoLISP Visual LISP Editor

Командная строка: VLIDE

1. Запустите AutoCAD.

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