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

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

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

Геометрические фигуры и текстовые шрифты

401

Упражнения

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

Напишите файл формы для вычерчивания прописной буквы “М”, показанной на рис. 11.20.

Рис. 11.20. Прописная буква “М”

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

Напишите файл формы для вычерчивания контура клиновой шпонки с головкой, показанной на рис. 11.21.

Рис. 11.21. Клиновая шпонка с головкой

402 Глава 11

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

Напишите файл формы для вычерчивания прописной буквы “G”, показанной на рис. 11.22.

Рис. 11.22. Прописная буква “G”

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

Напишите файл формы для вычерчивания прописной буквы “W”, показанной на рис. 11.23. Файл шрифта должен обеспечивать генерирование текста как в горизонтальном, так и в вертикальном направлении.

Рис. 11.23. Прописная буква “W”

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

1 — линия и дуга, 2 — блоки, редактировать, 3 — 255, 4 — форм, 5 — 0 (нуль), 6 — 2000, 7 — направление, 8 LOAD, 9 — направление, специальные коды, 10 — режим рисования, 002, 11 — следующих, 12 — аннулировать.

Глава 12

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

Цель занятия

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

выполнять математические операции, используя функции AutoLISP;

использовать тригонометрические функции AutoLISP;

правильно применять основные функции AutoLISP;

загружать и работать с программами AutoLISP;

использовать опции диалогового окна Load/Unload Applications;

использовать блок-схемы для анализа тех или иных процессов;

проверять выполнение условий с помощью условных функций.

404 Глава 12

Знакомство с AutoLISP

AutoLISP, разработанный специалистами компании Autodesk, Inc., представляет собой реализацию языка программирования LISP (слово LISP образовано из первых букв словосочетания LISt Processor). Первое упоминание об этом языке, принадлежащее Джону МакКарти (John McCarthy), появилось еще в 1960 году, в апрельском номере журнала The Communications of ACM.

Большинство языков программирования, разработанных в начале 1960-х, уже устарели. Исключением стали только FORTRAN и COBOL. LISP пережил эти времена и в настоящее время является ведущим языком программирования для систем искусственного интеллекта (AI — Artificial Intelligence). К числу основных диалектов языка программирования LISP можно отнести Common LISP, BYSCO LISP, ExpertLISP GCLISP, IQLISP, LISP/80, LISP/88, MuLISP, TLCLISP, UO-LISP, Waltz LISP и XLISP. Например, XLISP представляет собой свободно копируемый интерпретатор LISP, а Common LISP является диалектом LISP, напоминающим AutoLISP. Интерпретатор AutoLISP входит в комплект программного обеспечения AutoCAD. Однако следует заметить, что в AutoCAD LT и AutoCAD версии 2.17 интерпретатор AutoLISP отсутствует, поэтому вы сможете использовать язык программирования AutoLISP только с программой AutoCAD версии 2.18 и выше.

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

Язык программирования AutoLISP используется многими разработчиками программного обеспечения для написания программных пакетов, предназначенных для различных приложений. Например, автор этой книги разработал комплект программного обеспечения “SMLayout”, с помощью которого можно создавать плоские изображения различных геометрических фигур, таких как участки сопряжения и пересечения трубопроводов или деталей цилиндрической формы, коленчатые патрубки, конические поверхности, крышки и днища различных резервуаров. Таким образом, программисты, владеющие языком AutoLISP, довольно часто выступают в качестве консультантов при разработке программных приложений и нестандартных меню.

При написании этой главы предполагалось, что читатель хорошо знаком с командами AutoCAD и основными системными переменными, которые используются этой программой. Тем не менее, для того чтобы начать изучение языка AutoLISP, не требуется быть специалистом в области автоматического проектирования или опытным программистом. Для чтения материала этой главы достаточно иметь некоторые начальные знания в области программирования. Если вы знакомы с другими языками, изучение AutoLISP окажется для вас совсем несложным. Всестороннее обсуждение различных функций и пошаговые инструкции по решению приведенных примеров значительно упрощают процесс обучения. В этой главе вы познакомитесь с наиболее часто используемыми функциями AutoLISP и их применением в создаваемых программах. Для получения подробной информации о функциях, не описанных в этой книге, обратитесь к руководству “AutoLISP Programmer’s Reference Manual” от компании Autodesk. Какое-либо специальное обору-

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

дование для программирования на языке AutoLISP не требуется. Если на вашем компьютере работает программа AutoCAD, значит будет работать и редактор AutoLISP. Для написания программ на языке AutoLISP может использоваться любой текстовый редактор.

Математические операции

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

Сложение

Формат:

(+ число1 число2 число3 ...)

Эта функция (+) вычисляет сумму всех чисел, расположенных справа от знака “плюс” (+), т.е. выполняет операцию (число1 + число2 + число3 +...). Числа могут быть целыми или действительными (вещественными). Сумма целых чисел представляет собой целое число. Сумма, получаемая при сложении вещественных чисел, является вещественным числом. Несмотря на это, сумма целых и вещественных чисел также является вещественным числом. Как показано в следующих примерах, все числа, содержащиеся в первых двух строках, — целые, поэтому их сумма также является целым числом. В третьем примере одно из чисел (50,0) — вещественное, поэтому сумма чисел является вещественным числом.

Примеры

Command: (+

2

5)

4

50)

возвращает 7

Command: (+

2

30

возвращает 86

Command: (+

2

30

4

50,0)

возвращает 86,0

Вычитание

Формат:

(- число1 число2 число3 ...)

Эта функция (-) вычитает второе число из первого (число1 число2). Если в скобках содержится более двух чисел, второе и все последующие числа суммируются, а полученная сумма вычитается из первого числа (число1 – (число2 + число3 +...)). В первом примере 14 вычитается из 28, при этом возвращается число 14. Оба числа целые, поэтому полученный результат также является целым числом. В третьем примере 20 складывается с 10,0, а затем полученная сумма (30,0) вычитается из числа 50. В результате получаем вещественное число 20,0.

406

Глава 12

 

 

 

Примеры

 

 

 

Command: (- 28 14)

возвращает 17

Command: (- 25 7 11)

возвращает 7

Command: (-

50

20 10,0)

возвращает 20,0

Command: (-

20

30)

возвращает –10

Command: (-

20,0 30,0)

возвращает –10,0

Умножение

Формат:

(* число1 число2 число3 ...)

Эта функция (*) вычисляет произведение чисел, расположенных справа от звездочки (*), т.е. выполняет операцию (число1 × число2 × число3 × ...). Если сомножители являются целыми, полученный результат также будет целым числом. Если хотя бы один из сомножителей является вещественным числом, произведение чисел также будет вещественным.

Примеры

Command: (*

2

5)

3)

возвращает 10

Command: (*

2

5

возвращает 30

Command: (*

2

5

3 2,0)

возвращает 60,0

Command: (*

2

-5,5)

возвращает –11

Command: (*

2,0

-5,5 -2)

возвращает 22,0

Деление

Формат:

(/ число1 число2 число3 ...)

Эта функция (/) делит первое число на второе (число1/число2). Если в скобках находится более двух чисел, то первое число делится на произведение второго и всех последующих чисел [число1/(число2 × число3 ×...)]. В четвертом примере число 200 делится на произведение чисел 5,0 и 4, т.е. выполняется операция [200/(5,0 × 4)].

Примеры

Command: (/

30)

 

возвращает 30

Command: (/

3 2)

возвращает 1

Command: (/

3,0

2)

возвращает 1,5

Command: (/ 200,0 5,0 4)

возвращает 10,0

Command: (/ 200

-5)

возвращает –40

Command: (*

-200

-5,0)

возвращает 40,0

Возрастающие и убывающие числа и абсолютное значение числа

Возрастающие числа

Формат:

(1+ число)

Эта функция (1+) прибавляет единицу (целое число) к аргументу и возвращает число, увеличенное на 1. Во втором примере 1 прибавляется к числу –10,5, в результате чего получаем число –9,5.

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

407

Примеры

(1+

20)

возвращает 21

(1+

-10,5)

возвращает –9,5

Убывающие числа

Формат:

(1- число)

Эта функция (1-) отнимает 1 (целое число) от аргумента и возвращает число, уменьшенное на 1. Во втором примере 1 вычитается из числа –10,5, в результате чего получаем число –11,5.

Примеры

(1-

10)

возвращает 9

(1-

-10,5)

возвращает –11,5

Абсолютное значение числа

Формат:

(abs число)

Функция abs возвращает абсолютное значение (модуль) числа, которое может быть как целым, так и вещественным. Во втором примере функция abs возвращает 20, так как абсолютным значением числа –20 является 20.

Примеры

(abs

20)

возвращает 20

(abs

-20)

возвращает 20

(abs

-20,5)

возвращает 20,5

Тригонометрические функции

Функция синус (sin)

Формат:

(sin угол)

Функция синус (sin) вычисляет синус угла, выраженного в радианах. Во втором примере эта функция вычисляет синус угла π (180 градусов) и возвращает 0.

Примеры

(sin

0)

возвращает 0

(sin

pi)

возвращает 1,22461Е–016

(sin

1,0472)

возвращает 0,866027

Функция косинус (cos)

Формат:

(cos угол)

Функция косинус (cos) вычисляет косинус угла, выраженного в радианах. В третьем примере эта функция вычисляет косинус угла π (180 градусов) и возвращает –1,0.

408

Глава 12

 

Примеры

 

(cos

0)

возвращает 1,0

(cos

0,0)

возвращает 1,0

(cos

pi)

возвращает –1,0

(cos

1,0)

возвращает 0,540302

Функция арктангенс (atan)

Формат:

(atan число1)

Функция atan вычисляет арктангенс числа1 и возвращает угол, выраженный в радианах. Во втором примере эта функция вычисляет арктангенс числа 1,0 и возвращает 0,785398 радиан.

Примеры

Command:

(atan

0,5)

возвращает 0,463648 радиан

Command:

(atan

1,0)

возвращает 0,785398 радиан

Command:

(atan

-1,0)

возвращает –0,785398 радиан

Функция atan позволяет также определить второе число. Формат:

(atan число1 число2)

Если второе число определено, функция вычисляет арктангенс отношения (число1/ число2) и возвращает угол, выраженный в радианах. В первом примере первое число (0,5) делится на второе число (1,0) и функция atan вычисляет арктангенс делимого (0,5/1,0 = 0,5).

Примеры

Command: (atan

0,5

1,0)

возвращает 0,463648 радиан

Command: (atan

2,0

3,0)

возвращает 0,588003 радиан

Command: (atan 2,0

-3,0)

возвращает 2,55359 радиан

Command: (atan -2,0 3,0)

возвращает –0,588003 радиан

Command: (atan -2,0 -3,0)

возвращает –2,55359 радиан

Command: (atan

1,0

0,0)

возвращает 1,5708 радиан

Command: (atan

-0,5 0,0)

возвращает –1,5708 радиан

Функция angtos

Формат:

(angtos угол [режим [точность]])

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

Примеры

(angtos

0,588003

0 4)

возвращает “33,6901”

(angtos

2,55359

0

4)

возвращает “146,3099”

(angtos

1,5708

0

4)

возвращает “90,0002”

(angtos

-1,5708

0

2)

возвращает “270,00”

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

Примечание

Функция angtos имеет формат (angtos угол [режим [точность]]), где угол — угол, выраженный в радианах, а режим — режим функции, определяемый значением системной переменной AUNITS. В программе AutoCAD существуют следующие режимы:

Режим

Формат отображения

0Десятичные градусы

1Градусы/минуты/секунды

2Градиенты

3Радианы

4Геодезические единицы

Точность — целое число, определяющее количество знаков после запятой. Степень точности определяется значением системной переменной AUPREC. Минимальное значение параметра точность — 0, его максимальное значение равно четырем.

В первом примере задан угол 0,588003 радиан, режим 0 (угол выражается в градусах) и точность 4 (четыре знака после запятой). Функция возвратит значение 33,6901.

Операторы отношения

Как правило, многие программы включают в себя функции, которые проверяют выполнение тех или иных условий. Если данное утверждение справедливо, программа выполняет ряд определенных операций; если же это утверждение не является истинным, выполняются другие действия или операции. Например, реляционный оператор (if (< x 5)) проверяет, является ли значение переменной x меньше 5. Проверяемые условия такого типа довольно часто используются в программировании. В следующем разделе вы познакомитесь с различными реляционными операторами, которые используются в языке программирования AutoLISP.

Функция “равно”

Формат:

(= элемент1 элемент2 ...)

Эта функция (=) проверяет равенство элементов, указанных в скобках (элемент1 и элемент2). Если эти элементы равны, функция возвращает значение T. Если это условие не выполняется, функция возвращает значение nil.

Примеры

(=

5

5)

 

возвращает “T”

(=

5

4.9)

 

возвращает “nil”

(=

5.5 5.5 5.5)

возвращает “T”

(=

"yes"

"yes")

возвращает “T”

(=

"yes"

"yes" "no")

возвращает “nil”

Функция “не равно”

Формат:

(/= элемент1 элемент2 ... )

Эта функция (/=) проверяет равенство элементов, указанных в скобках (элемент1 и элемент2). Если эти элементы не равны, заданное условие выполняется и функция возвращает значение T. Если данные элементы равны, функция возвращает значение nil.

410

Глава 12

 

Примеры

 

(/=

50

4)

возвращает “T”

(/=

50

50)

возвращает “nil”

(/=

50

-50)

возвращает “T”

(/=

"yes" "no")

возвращает “T”

Функция “меньше”

Формат:

(<элемент1 элемент2 ...)

Эта функция (<) сравнивает значения элементов, указанных в скобках. Если первый элемент (элемент1) меньше второго (элемент2), функция возвращает значение T. Если заданное условие не выполняется, функция возвращает значение nil.

Примеры

(<

3

5)

4 2)

возвращает “T”

(<

5

3

возвращает “nil”

(<

"x"

"y")

возвращает “T”

Функция “меньше или равно”

Формат:

(< = элемент1 элемент2 ...)

Эта функция (<=) сравнивает значения элементов, указанных в скобках. Если первый элемент (элемент1) меньше или равен второму (элемент2), функция возвращает значение T. Если заданное условие не выполняется, функция возвращает значение nil.

Примеры

(<=

10

15)

возвращает “T”

(<=

"c"

"b")

возвращает “nil”

(<=

-2

0)

возвращает “T”

Функция “больше”

Формат:

(> элемент1 элемент2 ...)

Эта функция (>) сравнивает значения элементов, указанных в скобках. Если первый элемент (элемент1) больше второго (элемент2), функция возвращает значение T. Если заданное условие не выполняется, функция возвращает значение nil. В первом примере 15 больше 10. Следовательно, данное утверждение является истинным, поэтому функция возвращает значение T. Во втором примере 10 больше, чем число 9, которое, в свою очередь, равно второму числу 9. Как вы видите, заданное условие не выполняется, поэтому функция возвращает значение nil.

Примеры

(>

15

10)

возвращает “T”

(>

10

9 9)

возвращает “nil”

(>

"c"

"b")

возвращает “T”

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