34
Министерство образования и науки Российской Федерации Н.Е. Возмищев Н.С. Склярова СОЗДАНИЕ ПРИЛОЖЕНИЙ ДЛЯ AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp Учебное электронное текстовое издание Научный редактор: доц., канд. техн. наук Д.В. Куреннов Подготовлено кафедрой «Информационные технологии и автоматизация проектирования» В методических указаниях даны общие положения по выполнению курсовой работы: цели и задачи, последовательность выполнения, требования к оформлению, порядок защиты. В качестве типового решения рассмотрена задача «Составление программы для вычеркивания втулки на языке AutoLisp», дан пример выполнения. Екатеринбург 2013

AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

Министерство образования и науки Российской Федерации

Н.Е. Возмищев Н.С. Склярова

СОЗДАНИЕ ПРИЛОЖЕНИЙ ДЛЯ AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp Учебное электронное текстовое издание Научный редактор: доц., канд. техн. наук Д.В. Куреннов Подготовлено кафедрой «Информационные технологии и автоматизация проектирования» В методических указаниях даны общие положения по выполнению курсовой работы: цели и задачи, последовательность выполнения, требования к оформлению, порядок защиты. В качестве типового решения рассмотрена задача «Составление программы для вычеркивания втулки на языке AutoLisp», дан пример выполнения.

Екатеринбург 2013

Page 2: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

2

СОДЕРЖАНИЕ

ВВЕДЕНИЕ ......................................................................................................... 3

1. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ AutoLisp .................................................... 5

1.1. Представление информации .................................................................... 5

1.2. Вычисляемые выражения ........................................................................ 5

1.3. Функция присвоения setq ........................................................................ 6

1.4. Выполнение команд AutoCAD ................................................................ 6

1.5. Функция load ............................................................................................. 6

1.6. Функции .................................................................................................... 6

1.6.1. Арифметические функции ................................................................ 6

1.6.2. Логические функции ......................................................................... 6

1.6.3. Ввод-вывод (текстовый режим) ........................................................ 7

1.6.4. Ввод-вывод (графический режим) ................................................... 7

1.6.5. Преобразование типов данных ......................................................... 8

1.6.6. Структуры управления ...................................................................... 8

1.6.7. Списки ................................................................................................ 8

1.6.8. Некоторые другие функции .............................................................. 9

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

1.6.8.2. Функция polar ........................................................................... 10

1.6.8.3. Функция inters .......................................................................... 11

1.6.9. Функции доступа к примитивам AutoCAD ................................... 11

2. РАБОТА В СРЕДЕ Visual LISP.................................................................... 14

2.1. Открытие VisualLISP ............................................................................. 14

2.2. Открытие и загрузка файла AutoLISP с помощью VisualLISP ........... 14

2.3. Использование интерфейса Visual LISP ............................................... 15

3. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ РАБОТЫ............... 18

4. ПРИМЕР ВЫПОЛНЕНИЯ ........................................................................... 22

БИБЛИОГРАФИЧЕСКИЙ СПИСОК .............................................................. 33

Page 3: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

3

ВВЕДЕНИЕ

Широкие возможности системы AutoCAD позволяют использовать ее

как инструмент для создания автоматизированных рабочих мест для техни-

ческих специалистов разных направлений. Структура системы дает воз-

можность дополнять стандартные средства AutoCAD собственными нара-

ботками. Серьезные варианты адаптации системы требуют знаний языка

AutoLisp – традиционно основного языка программирования в среде

AutoCAD.

В частности, в практике автоматизированного проектирования неред-

ко возникает необходимость рисования часто повторяющихся деталей,

имеющих различные размеры (параметризованные детали). Размеры могут

быть получены расчетным путем, либо определяются пользователем в диа-

логе. Для ускорения подобного рода работ целесообразно для типовых де-

талей разработать программы рисования, позволяющие получать чертежи

высокой степени готовности. Доработка таких чертежей сводится обычно к

простановке недостающих размеров, нанесению дополнительных видов и

разрезов и надписей.

В общем случае структура такой программы может быть представле-

на следующим образом (рис. 1).

Рис. 1

Ввод исходных данных

Проектирование Расчеты Ввод нормативно-

справочной информации

Рисование

Page 4: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

4

Тексты программ на языке AutoLisp имеют расширение .lsp.

Ниже приводятся основные сведения о языке AutoLisp, необходимые

для реализации этой схемы, а также пример программы рисования парамет-

ризованной детали. Наиболее полные сведения можно найти в справочной

системе AutoCAD и в соответствующей литературе.

Page 5: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

5

1. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ AutoLisp

1.1. Представление информации

AutoLisp работает с объектами следующих типов:

– целое число: 123;

– вещественное число: 123.4 или +1.234е2 или 1234е-2;

– строка: "строка символов";

– cписок произвольных элементов: (эл1 эл2 … элn);

– двухмерная точка: (15.50 27.4);

– трехмерная точка: (15.50 27.4 100.0);

– примитив AutoCAD;

Для хранения данных используются переменные (идентификаторы),

не совпадающие по написанию с зарезервированными или ранее занятыми.

Создание новых переменных и присвоение им значений осуществляется с

помощью функции setq.

Некоторые параметры могут иметь фиксированные значения:

пустой список: nil; истинное условие: t(rue)

В тексты программы полезно вставлять комментарии, начинающиеся

с символа ; (точка с запятой): ; Строка комментария.

1.2.Вычисляемые выражения (<функция> [<аргумент1>] [<аргумент2>]…[<аргументN>]…] ])

Здесь <функция> – имя функции, <аргумент1> <аргумент2>… <ар-

гументN> – аргументы функции, разделяемые, по крайней мере, одним

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

ное отсутствие находящихся между ними аргументов. Все выражения за-

ключены в круглые скобки. Поэтому каждой открывающей круглой скобке

должна соответствовать закрывающая. В любой AutoLISP-программе коли-

чество открывающих и закрывающих круглых скобок совпадает.

Page 6: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

6

1.3. Функция присвоения setq (setq <переменная1> <выражение1 > …[< переменнаяN >< выражениеN>])

Например, (setq r1 15.3 s2 4) интерпретируется как r1=15.3, s2=4

1.4. Выполнение команд AutoCAD

Ввод пользователя в командной строке AutoCAD с клавиатуры ими-

тирует функция command. Команды и их параметры записываются так же,

как и при работе в системе AutoCAD

(command "_LINE" "0,0" "210,0" "210,297" "0,297" "_C")

1.5. Функция load

Служит для загрузки файла с текстом программы и его выполнения.

(load " c:/Dis/Prog/file.lsp) или (load " c:\\Dis\\Pro\\/file.lsp)

1.6. Функции

1.6.1. Арифметические функции Функция Назначение Пример

+ Вычисляет сумму чисел (+ 12 7 11.0) ⇒ 30.0 – Вычисляет разность чисел (– –2 1.1 0.3) ⇒ –3.4 * Вычисляет произведение (* –2 1.1 0.3) ⇒ –0.66 / Вычисляет частное чисел (/ –2 1.1 0.3) ⇒-6.06061 1+ Увеличивает аргумент на 1 (1+ 1.1) ⇒ 2.1 1– Уменьшает аргумент на 1 (1– 1.1) ⇒ 0.1 abs Абсолютная величина числа (abs –1.1) ⇒ 1.1 pi 3.1415926

1.6.2. Логические функции Функция Назначение Пример

=

Проверяет равенство аргу-ментов

(= 30 30 ) ⇒ T(rue) (= “abcd” “abcd”) ⇒ T(rue) (= 2 30) ⇒ nil

/= Проверяет неравенство аргу-ментов

(/= 30 30 ) ⇒ nil (/= “abcd” “abcd”) ⇒ nil (/= 2 30) ⇒ T(rue)

<

Проверяет расположение ар-гументов по возрастанию (слева направо)

(< -1.0 0) ⇒ T(rue) (< “a” “b” “k”) ⇒ T(rue) (< 2 2 30) ⇒ nil

Page 7: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

7

<=

Проверяет расположение по неубыванию (слева направо)

(<= –1.0 0) ⇒ T(rue) (<= “qa” “q”) ⇒ nil (<= 2 2 30) ⇒ T(rue)

>

Проверяет расположение ар-гументов по убыванию (слева направо)

(> –1.0 0) ⇒ nil (> “a” “b” “k”) ⇒ nil (>“qa” “q”) ⇒ T(rue)

>=

Проверяет расположение ар-гументов по невозрастанию (слева направо)

(>= –1.0 0) ⇒ nil (>=2 2 30) ⇒ nil (>=“qa” “q”) ⇒ T(rue)

and Логическое умножение (and T T) ⇒ T (and T nil) ⇒ nil

or Логическое сложение (and T T) ⇒ T(rue) (and T nil) ⇒ T(rue)

not Логическое отрицание (not T) ⇒ nil (not nil) ⇒ T(rue)

1.6.3. Ввод-вывод (текстовый режим)

Функция Назначение Пример open

Открыть файл цель: w – запись

r – чтение

(open “c:\\docum\\new.tst” “w”) (open “c:/docum/new.tst” “r”)

close Закрыть файл (close f) /f – указатель на файл, по-лучаемый при открытии файла

print Вывод в файл с новой строки (print «результат» f) printc Вывод в файл без преобразо-

вания служебных кодов (prin1 “\nрезультат” f) ⇒ результат

prompt Вывод сообщения на дисплей (prompt “нажмите Enter”) write-line Вывод строки в файл (write-line “end” f) reade-line Ввод строки из файла (read-line “end” f) getstring Ввод строки с клавиатуры

1.6.4. Ввод-вывод (графический режим)

Функция Назначение Пример getint Ввод целого числа (getint “введите число сторон:”) getreal Ввод числа (getreal “высота:”) getpoint Ввод точки (getpoint “начало контура?”) getangle Ввод угла (getangle p “задайте угол:”) getdist Ввод расстояния (getdist p “задайте расстояние:”) getorient Ввод абсолютного угла (getorient “Угол наклона: ”)

Page 8: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

8

1.6.5. Преобразование типов данных Функция Назначение Пример float Целого в вещественное (float 15) ⇒ -15.0 itoa Целого в строку (itoa 16) ⇒ “16” rtos Вещественного в строку (rtos 1.2345) ⇒ “1.2345” substr Выделение подстроки

(substr <строка><начало>[<кол-во>]) (substr “It is 4” 4 2) ⇒ “is”

strcat Конкатенация (strcat “I” “am”) ⇒ “I am” strlen Длина строки (strlen “строка”) ⇒ 6 atof Строка в вещественное (atof “1.23”) ⇒ 1.23 atoi Строка в целое (atoi “012”) ⇒ 12

1.6.6. Структуры управления

cond Выбор по условиям (cond (<усл1> [<выр1> .]) .

[(<усл2> [<выр2> .])].)

(cond ((= cc 1) “R”) ((= cc 2 ) “Y”))

foreach Повторное выполнение foreach <имя> <список> [ [<выр1>]...

[<вырN>] ])

(foreach a ‘(1 2 3) print a) печатает каждое из чисел списка

if Условные вычисления (if (<усл> <выр1> [<выр2>]).

(if (> a b ) 1 10) a>b⇒ 1, иначе ⇒ 10

repeat Повторить n раз (repeat <кол-во> <выражение1> …])

(repeat 5 print “\n”)

defun Определение функции (defun<имя> ([аргум.]/[<рабочие>]) <выражения>)

(defun fun (x / h) (+ x (setq h 1)))

progn Составное выражение (prong <выр1> <выр2> …<вырN>)

(prong (ver) ( * 2 a))

while Циклическое выполнение (while <усл> <выр1> […<вырN>])

(while ( > a 0) (setq a (1- a)))

applay Применить функцию ко всем элементам списка (applay ‘<функция> <список>)

(applay ‘+ ‘( 1 2 3 )) ≡ (+ 1 2 3 ) ⇒ 6

1.6.7. Списки

list Создать список (list [<эл1> <эл2> …<элN>])

(list 1 “ab” (3 4) ) ⇒ (1 “ab” (3 4) )

cons Добавить в начало списка, со-здать точечную пару (cons <арг1><арг2>)

(cons 67.4 ‘( 10.3 –3.9)) ⇒ (67.4 10.3 –3.9)

(cons 2 4 ) ⇒ ( 2 . 4 ) append Объединение списков в один

(append [<список1> [<список2>… [<списокN>…] ])

(append ‘(7 200 –6) ‘(–10 8 1)) ⇒ (7 200 –6 –10 8 1)

Page 9: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

9

reverse Реверсировать список (reverse <список>)

(reverse ‘(7 200 –6 –10 8 1)) ⇒ ( 1 8 –10 –6 200 7)

car Взять первый элемент списка (car <список>)

(car ‘(11 12 13 14)) ⇒ 11

cdr Взять список без первого эле-мента

(cdr ‘(5 6 7 8 )) ⇒( 6 7 8 )

cadr сar ( cdr ( список ) ) (cadr ‘(11 12 13 14)) ⇒ 12 caddr сar ( cdr ( cdr (список) ) ) (caddr ‘(11 12 13 14)) ⇒ 13 cddr cdr ( cdr (список) ) (cddr ‘(11 12 13 14)) ⇒ (13 14) caar car (car (список) ) (caar ‘(11 12 13 14)) ⇒ 11 nth Взять N-ый элемент списка (nth 1 ‘(11 12 13 14)) ⇒ 12 member Проверяет принадлежность

элемента списку (member <элемент><список>)

(member 1 ‘(4 50 1 2 ) ⇒(1 2) (возвращает остаток списка, начи-ная с места <элемент>)

length Определяется длина списка (length <список>)

(length ‘(11 12 13 14)) ⇒4

last Последний элемент списка (length <список>)

(length ‘(16 23 90))

subst Заменяет старый элемент в списке на новый (subst <новый ><старый>)

(subst 6 5 ‘(11 5 7 0 )) ⇒ ‘(11 6 7 0 )

1.6.8. Некоторые другие функции

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

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

пользователя. Формат функции:

(defun <имя> ([<аргументы>] [/ <переменные>]) <выражения>) – описывает

тело функции, ее аргументы и локальные переменные (т. е. переменные, ко-

торые не являются глобальными и имеют действие только в теле самой

функции; вне тела функции эти символы не определены); возвращаемым

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

ния ее тела. Пример:

(defun oursum (a1 а2 аЗ / s)

(setq s (+ a1 a2))

(- s a3) ); конец тела функции

Page 10: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

10

Здесь определена функция с именем. oursum. У функции три аргумента: a1, а2 и

а3 – вместо них AutoLISP подставит значения, с которыми эта функция будет вызвана.

Переменная s используется для временного хранения результата операции суммирова-

ния. В теле функции всего два выражения: первое вычисляет сумму a1 и а2 и сохраняет

ее в переменной s, а второе вычисляет разность между s и аз. Вычисленная разность яв-

ляется значением последнего выражения в теле функции, поэтому является и возвраща-

емым значением функции oursum. Как аргументы a1, a2 и а3, так и переменная s являют-

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

чтобы функцией oursum можно было воспользоваться в текущем рисунке AutoCAD, ее

необходимо предварительно сохранить в текстовом файле с расширением lsp (например,

ourfunctions.lsp) и затем загрузить этот файл с помощью функции load:(load

"ourfunctions.lsp"). Имя загружаемого файла с расширением lsp может содержать и путь.

После того, как файл, содержащий тело функции oursum, загружён, можно обратиться к

функции в любом месте программы, задав значения ее трех аргументов, например:(setq

vall (oursum 55.02 .933 –2.64)). Разумеется, при обращении к функции oursum в каче-

стве аргументов могут быть использованы любые выражения, результатами вычисления

которых будут значения необходимого типа (в данном примере – это три вещественных

числа).

1.6.8.2. Функция polar

Вычисляет координаты второй точки, отстоящей от первой точки, задан-

ной аргументом <точка>, на расстояние, величина которого указана в качестве

аргумента <расстояние>. При этом отрезок, построенный из первой точки во

вторую, в проекции на текущую плоскость построений должен образовать с

осью X угол, равный значению аргумента <угол> (в радианах).

(polar <точка> <угол> <расстояние>)

Аргументы: <точка> – список из двух или трех чисел, представляющих

собой координаты двумерной или трехмерной точки; <угол> – вещественно

число, представляющее собой угол, в радианах, с положительным направлени-

ем оси X текущей плоскости построений; <расстояние> – положительно веще-

ственное число.

Page 11: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

11

Примеры:

(polar '(15.66 33.2) -0.659 3.6689) ⇒ (18.5607 30.9534)

(polar '(-2.421 2.32 6.812) 1.45 12.53) ⇒ (-0.9111 14.758| 6.812) .

1.6.8.3. Функция inters

Геометрическая функция inters имеет следующий синтаксис:

(inters <точка1> <точка2> <точка3> <точка4> [<признак>])

Вычисляет координаты точки пересечения двух отрезков, один из кото-

рых ограничен точками, заданными в качестве аргументов <точка1> и <точ-

ка2>, а второй – точками, определенными аргументами <точка3> и <точка4>.

Если заданный аргумент <признак> равен nil, тогда вместо точки пересечения

отрезков ищется точка пересечения двух прямых, проходящих, соответственно,

через первый и второй отрезки. Типы аргументов: первые четыре аргумента –

списки из двух или трех чисел, представляющих двумерные или трехмерные

точки; <признак> – любое значение (важно только, равно оно nil или нет). Воз-

вращаемое значение: список с координатами точки пересечения или nil, если

пересечения нет. Пример:

(inters '(6.20 4.77) '(-5.13 2.49) '(1.38 2.19-) '(-2,22 5.61)) ⇒ (-0.0185357 3.51861)

1.6.9. Функции доступа к примитивам AutoCAD Рисунок в системе AutoCAD имеет организацию, аналогичную организа-

ции базы данных, в которой элементы (графические примитивы и неграфиче-

ские объекты) имеют списковую структуру. Каждый примитив обладает своим

типом. Как правило, наименование типа совпадает с английским именем ко-

манды системы AutoCAD, которая создает графический объект.

Основным инструментом извлечения информации о геометрии и свой-

ствах является функция entget, которая получает список с характеристиками

примитива.

Page 12: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

12

entget <примитив> [<приложения>]

Здесь аргумент <примитив> – это имя примитива для получения его дан-

ных, аргумент [<приложения>] – это список с именами приложений, с помо-

щью которых к примитиву привязаны расширенные данные.

Предположим, в рисунке последним объектом является дуга (тип прими-

тива – ARC). Тогда выражение (setq le (entget (entlast))) должно вернуть список: ((-1 . <Имя объекта: 7ef1d978>) (0 . "ARC") (330 . < Имя

объекта: 7ef1bcf8>) (5 . "28F") (100 . "AcDbEntity") (67

. 0) (410 . "Model") (8 . "контур") (100 . "AcDbCircle")

(10 2170.9 1210.81 0.0) (40 . 72.1867) (210 0.0 0.0 1.0)

(100 . "AcDbArc") (50 . 3.29541) (51 . 4.83521))

(Функция entlast извлекает имя последнего неудаленного основного примитива ри-

сунка).

В этом списке элементами являются точечные пары и списки, причем и

в тех и других первыми элементами выступают целые числа, называемые

DXF-кодами.

код 1– указывает имя примитива <Имя объекта: 7ef1d978>);

код 0 – тип примитива ("ARC");

код 5 – метку (внутренний номер примитива в рисунке);

код 8 – имя слоя ("контур");

код 10 – координаты центра;

код 40 – радиус дуги

код 50 – начальный угол;

код 51 – конечный угол

код 210 – направление вектора нормали к плоскости, в которой описан

примитив;

код 410 – имя вкладки пространства модели или листа;

Page 13: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

13

Остальные коды, не имеющие принципиального значения, здесь не рассмат-

риваются.

С помощью функции assoc можно из списка с характеристиками объ-

екта с характеристиками объекта извлечь нужную точечную пару, а затем

функцией cdr необходимого DXF-кода.

Функция assoc применяется к сложному списку, в котором элементами

являются списки или точечные пары, и выбирает из этих элементов (внутрен-

них списков и точечных пар) тот, у которого первый элемент имеет заданное

значение.

(assoc <код> <список>) Если в аргументе <список> имеется несколько элементов, удовлетворя-

ющих требуемому условию, то в качестве возвращаемого значения выбирает

первый из них. Функция assoc – основной инструмент в операции, когда из

списка с данными примитива AutoCAD нужно выбрать тот элемент, который

содержит точечную пару с нужным DXF-кодом свойства (цвета, тип линии, ве-

са и т. д.).

Возвращаемое значение – точечная пара или список, являющиеся элемен-

тами аргумента <список> и имеющие в качестве своего первого элемента дан-

ный <код>.

Продолжим пример с дугой:

– (cdr (assoc 0 le)) возвращает "ARC" (тип примитива);

– (cdr (assoc 8 le)) возвращает "контур" (имя слоя);

– (cdr (assoc 8 le)) возвращает "контур" (имя слоя);

– (cdr (assoc 10 le)) возвращает (2170.9 1210.81 0.0)

– (cdr (assoc 10 le)) возвращает (2170.9 1210.81 0.0)

– (cdr (assoc 40 le)) возвращает 72.1867

Page 14: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

14

2. РАБОТА В СРЕДЕ Visual LISP

Кодирование и отладку удобно проводить в среде Visual Lisp, являю-

щейся частью AutoCAD.

2.1. Открытие VisualLISP

Чтобы запустить VisualLISP нужно либо ввести в командной строке

AutoCAD команду Vlide, либо выбрать Tools>AutoLISP>VisualLISP Editor

(Сервис>AutoLISP>Редактор VisualLISP). С помощью одного из этих мето-

дов вы можно переключиться в Visual LISP в любой момент времени.

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

открыть уже существующий. Чтобы отредактировать или просмотреть файл

в редакторе текста Visual LISP, выполните приведенные ниже действия.

1. Выберите из меню Visual LISP команду File > Open (Файл>Открыть).

2. В диалоговом окне Open File to Edit/View (Открытие файла для ре-

дактирования/просмотра) найдите и выберите файл, который хотите

открыть.

3. Щелкните на кнопке Open (Открыть).

После открытия файла в строке заголовка его окна отображается пик-

тограмма с изображением чистого листа бумаги, свидетельствующая о том,

что файл еще не был изменен.

Если в файл внести какие-либо изменения, то к пиктограмме добавит-

ся изображение карандаша, означающее, что файл был изменен.

Чтобы использовать в AutoCAD программу AutoLISP, ее необходимо

загрузить. Это можно сделать либо из VisualLISP либо непосредственно из

AutoCAD. Если в Visual LISP уже открыт файл программы, то для его за-

грузки выберите в редакторе команду Tools > Load Text (Сервис > За-

грузить текст) или щелкните на пиктограмме Load Active Edit Window (За-

Page 15: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

15

грузить программу из активного окна редактирования) панели инструмен-

тов Tools.

2.3. Использование интерфейса Visual LISP

В окне Visual LISP содержится множество средств, облегчающих про-

цесс программирования. Ниже перечислены наиболее полезные инструмен-

ты Visual LISP.

Форматирование программы. Щелкните на пиктограмме Format Ed-

it Window (Форматировать содержимое окна редактирования) панели ин-

струментов Tools (или выберите в меню редактора команду Tools>Format

Code (Сервис>Форматировать код)), чтобы структурировать код (и коммен-

тарии), сделав его более легким для восприятия. Структурированный код

позволяет яснее увидеть уровни вложенности скобок.

Форматирование выделенного фрагмента программы. Выделите

фрагмент кода, который вы хотите отформатировать. Затем щелкните на

пиктограмме Format Selection (Формат выделенного фрагмента) панели ин-

струментов Tools (или выберите команду Tools > Format Code in Selection

(Сервис > Форматировать код выделенного фрагмента)), чтобы структури-

ровать только выделенный фрагмент кода.

Синтаксический контроль текста программы. Щелкните на пик-

тограмме Check Edit Window (Проверить содержимое окна редактирования)

панели инструментов Tools (или выберите в редакторе команду Tools >

CheckText (Сервис > Проверить текст)), чтобы выполнить предварительную

проверку файла до его загрузки VisualLISP. В процессе этой проверки в

файле можно выявить несоответствие скобок, некорректные определения

функций (попытки переопределить встроенные или защищенные функции),

а также множество других типичных ошибок. Результаты проверки Visual

LISP отобразит в окне Build Output.

Page 16: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

16

Cинтаксический контроль выделенного фрагмента текста про-граммы. Выделите фрагмент кода, который вы хотите проверить. Щелкните на пик-

тограмме Check Selection (Проверка выделенного фрагмента) панели ин-

струментов Tools (или выберите в редакторе команду Tools > Check Selec-

tion (Сервис > Проверить выделенный фрагмент)), чтобы выполнить пред-

варительную проверку лишь выбранного фрагмента кода. Результаты про-

верки Visual LISP отобразит в окне Build Output.

Поиск парной скобки. Наиболее типичной ошибкой при написании

программ AutoLISP является неправильное соответствие скобок. Visual

LISP позволяет перемещаться между соответствующими друг другу скоб-

ками и быстро проверять текущий уровень вложенности скобок в процессе

разработки приложения. Для выполнения этой операции можно пользовать-

ся командами меню Edit Parentheses Match-ingoMatch Forward (Прав-

ка>Соответствие скобок Вперед) и Edit Parentheses Matching>Match Back-

ward (Правка > Соответствие скобок > Назад). Однако гораздо удобнее ис-

пользовать клавиши ускоренного доступа, чтобы не отрываться от кода, с

которым вы работаете. Чтобы найти соответствующую закрывающую скоб-

ку, нажмите комбинацию клавиш <Ctrl+]>. Для нахождения соответствую-

щей открывающей скобки используйте комбинацию клавиш <Ctrl+[>.

Вы можете выделить весь фрагмент кода, расположенный в соответ-

ствующих скобках. Чтобы выделить весь фрагмент слева направо, помести-

те указатель мыши рядом с открывающей скобкой и нажмите комбинацию

клавиш <Ctrl+Shift+]> или просто дважды щелкните мышью. Чтобы выде-

лить фрагмент справа налево (в обратном направлении), поместите курсор

после закрывающей скобки и нажмите комбинацию клавиш <Ctrl+Shift+[>

или дважды щелкните мышью.

Преобразование блока программы в комментарий. Чтобы создать

такой комментарий, выделите текст, который должен служить комментари-

Page 17: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

17

ем и щелкните на пиктограмме Comment Block (Закомментировать блок)

панели инструментов Tools.

Преобразование комментария в блок программы. Чтобы удалить

комментарий, отмеченный тройным символом "точка с запятой", щелкните

на пиктограмме Uncomment Block (Раскомментировать блок) панели

инструментов Tools.

Подобно тому, как выражения AutoLISP вводятся в командной строке,

их можно вводить и в окне Console, чтобы наблюдать результат выполне-

ния. В каждой строке окна содержится приглашение _$. Visual LISP помнит

все введенные вами выражения. Нажимая клавишу <Tab> можно повторить

их последовательность, а с помощью комбинации клавиш <Shift+Tab>

можно воспроизвести их в обратном порядке.

Чтобы закрыть файл в Visual LISP, щелкните на пиктограмме Close.

(Для этого можно также воспользоваться комбинацией клавиш <Ctrl+F4>.)

Чтобы завершить работу Visual LISP, щелкните на кнопке Close самого

приложения или нажмите комбинацию клавиш <Alt+F4>. Как и при выходе

из AutoCAD, вам будет предложено сохранить все внесенные изменения.

Page 18: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

18

3. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ РАБОТЫ

Работа включает разработку, кодирование и отладку параметрической

модели типового элемента чертежа (параметрического шаблона). Парамет-

рическая модель составляется на языке AutoLisp и реализуется как команда

в среде Автокада.

Входные данные, по которым выбираются данные для вычерчивания,

задаются в диалоге в командной строке AutoCAD. Непосредственно ин-

формация о детали хранится файле в текстовом формате.

Этапы выполнения работы:

1. Начертить в среде AutoCAD эскиз объекта (детали), для которого со-

ставляется параметрическая модель. Чертежи объектов с необходи-

мыми для вычерчивания данными приведены в приложении. Проста-

вить на эскизе буквами (или числами, если они постоянны) все разме-

ры, необходимые для построения изображения этого объекта. Пока-

зать на эскизе точку установки объекта в чертеж (точку привязки).

Позже на эскизе будут проставлены опорные точки (см. этап 5).

Изображение детали сохранить как слайд (команда mslide).

2. Определить параметры модели, т.е. те размеры, которые ваша ко-

манда будет запрашивать у пользователя. Определить области допу-

стимых значений параметров, они будут использованы в Lisp-

программе для проверки допустимости вводимых значений.

3. Определить производные размеры и константы, необходимые для

построения изображения. Производные размеры определяются в зави-

симости от параметров модели по формулам или таблицам. Необхо-

димо в отчете привести соответствующие формулы и таблицы (ука-

зать ссылки на литературу: откуда взяты формулы и таблицы). Табли-

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

шиностроителя или других аналогичных справочников или непосред-

Page 19: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

19

ственно из приложения. Производные параметры и размеры, опреде-

ляющие геометрию объекта и представленные в табличном виде,

должны быть соответствующим образом занесены в текстовый файл с

расширением dat.

4. Определить концепцию изображения объекта средствами AutoCAD,

т.е. в каком порядке и какими командами Автокада строится изобра-

жение объекта. Например, для подшипника, рисуется верхняя поло-

вина изображения (line, circle, fillet), отражается (mirror), штрихуются

сечения колец (bhatch).

5. Определение опорных точек. Проставить на эскизе объекта все

опорные точки, необходимые для вычерчивания объекта, согласно

концепции изображения. Опорные точки изображения – это точки,

которые необходимо определить, чтобы указать разным командам

Автокада при построении этого изображения (это концы отрезков,

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

Определение опорных точек начинается от точки привязки. Для опре-

деления новой опорной точки, чаще всего, применяется один из двух

способов:

Новая точка определяется как отстоящая от известной точки под

указанным углом и на указанном расстоянии (функция polar); способ

представления в отчете: Новая точка определяется своими координа-

тами через координаты других точек (используются функции car,

cadr, list);

6. Изображение объекта. Описать порядок построения изображения

средствами Автокада с указанием используемых примитивов (отре-

зок, дуга, отражение, выбор слоев и т.п.) и ответов на их запросы (оп-

ции, расстояния, точки).

Page 20: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

20

Примечание: разделы 5 и 6 могут повторяться в алгоритме много-

кратно, иными словами, можно определить часть опорных точек –

изобразить, потом другую часть – изобразить и т.д.

Изображение должно быть выполнено на отдельных слоях: ОСИ (крас-

ный), КОНТУР (черный, толщина линии – 0.8), РАЗМЕРЫ (синий),

ШТРИХОВКА (желтый).

7. Ввод исходных данных. Сформировать текстовым редактором (Note-

Pad,WordPad) файл с исходными данными. Под каждый параметр в строке

(записи) должно быть отведено одинаковое количество символов: i. № D D1 d d1 H h h1 h2 h3 d2 Обо-

значение

ii. 1 148 110 50.0 50.0 46 26 5.0 10 8 10 07-65A

iii. 2 88 68 28.0 28.0 36 17 3.5 6 5.5 10 28-92

iv. 3 268 170 60.0 60.0 51 48 1.5 8 20 10 01-481

8. Кодирование и отладка Lisp-программы до рабочего состояния.

Выполняется на компьютере. Кодирование и отладку удобно прово-

дить в Visual Lisp (является частью AutoCAD). Однако, ввести текст

программы можно и на компьютере где не установлен AutoCAD, ис-

пользуя для этого блокнот Windows.

Для упрощения процесса ввода и отладки целесообразно весь

текст разбить на отдельные логически завершенные функции (напри-

мер, ввода исходных данных, создания среды, вычисления точек кон-

тура, отрисовки, простановки размеров). Эти функции оформляются

как пользовательские функции (посредством функции defun).

Программа считается отлаженной, если она корректно работает

для всех исходных данных в пределах их области допустимых значе-

ний. Если программа отлажена, в отчете достаточно привести лишь

Page 21: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

21

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

ладку.

Результатом работы может быть и не отлаженная программа.

В этом случае, кроме процента затраченного времени, приводятся резуль-

таты отладки, т.е. какие варианты отлажены, какие нет, а если нет и одно-

го отлаженного варианта, то лучший полученный результат (до какого

места работает, и где начинаются непонятные вещи).

Любую переменную Lisp-программы можно просмотреть, если

она глобальная, после выполнения вашей программы. В среде Авто-

када для этого применяется команда ! (восклицательный знак).

Например: Command: !р4

Содержание отчета

Отчет должен содержать:

– задание на разработку – формулировку задания и параметрический

чертеж детали;

– текст Lisp-программы;

– таблицу исходных данных;

– контрольный пример работы программы – чертеж конкретного экзем-

пляра детали.

Page 22: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

22

4. ПРИМЕР ВЫПОЛНЕНИЯ

1. Постановка задачи

Создать команду AutoCAD для вычерчивания чертежа параметризо-

ванной детали, представленной на рис. 2. Данные о детали хранятся в тек-

стовом файле в виде таблицы (рис. 3). Исходными данными для получения

конкретного экземпляра детали являются номер детали (или ее название) и

точка вставки чертежа. Эти данные вводятся из командной строки. Команду

вычерчивания детали разработать в системе AutoLisp.

2. Реализация

№ D D1 d2 d3 d4 H L c a r 1 148 80 110 10 40 26 150 2 8 5 2 100 60 80 8 24 20 120 1.5 5 3

3 130 70 100 6 30 15 125 1.5 6 4

4 160 92 130 12 50 30 100 3 10 6

Рис. 3 Данные о детали

Рис. 2. Параметризованный чертеж детали

Page 23: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

23

2. Порядок выполнения

Элементы чертежа (контур, размеры, штриховка) выполнены на разных

слоях – «контур», «оси», «штриховка», «размеры». Вычерчивание контура и

элементов чертежа производится по опорным точкам в следующем порядке.

Шаг 1. Строится верхняя половина нормализованного контура (без

фасок и скруглений) по опорным точкам P0–P5 (рис. 4).

Рис. 4

Шаг 2. Выполняются фаски (a, c) и скругление (r). Для выбора линий при

построении фасок и скругления используются точки Pa1,Pa2, Pf1,Pf2, Pc1,Pc2,

лежащие на срединах соответствующих отрезков (рис. 5).

Рис. 5

Шаг 3. Строится нижняя половина контура зеркальным отражением

верхней. Выбор верхней половины контура производится либо в режиме «Рам-

Page 24: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

24

ка» («Window») точками P1, P5, лежащими на диагонали рамки для выбора, ли-

бо в режиме «все» (рис. 6) .

Рис. 6

Шаг 4. Строятся остальные линии чертежа (рис. 7).

Рис. 7

Шаг 5. Выполняется штриховка нижней половины. Для выбора зон штри-

ховки определяются точки Ph1 и Ph2. Способ штриховки – «Из линий».

Page 25: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

25

Рис. 8

Шаг 6. Строятся размеры чертежа. Для этого должны быть определены

недостающие точки контура (P17–P22) и точки положения размерного текста

(Pt…). Для простановки размера d2 необходимо создать новый размерный

стиль «Half», в котором отсутствуют одна выносная линия (DIMSE1=1) и одна

стрелка (DIMSD1=1).

Рис. 9

Page 26: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

26

Шаг 7. Строится вторая проекция чертежа

Исходные данные о детали могут быть введены двумя способами. На эта-

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

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

Для расчета координат точек целесообразно создать две пользовательские

функции: MidPoint (вычисление средней точкой на отрезке, заданном конечны-

ми точками) и ParArc (определение параметров дуги).

Контрольный пример

Рис. 10

3.Текст программы ; Вспомогательные функции ;---------------------------------------------------------------------------------------------- (defun MidPoint (t1 t2) ; Вычисление средней точкой на отрезке, заданного конечными точками P1 и P2

Page 27: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

27

(setq x (+ (car t1) (/ (- (car t2) (car t1)) 2)) y (+(cadr t1) (/ (- (cadr t2) (cadr t1)) 2)) ; cadr <список> - (car(cdr <список>)) MP (list x y) ) ) ;------------------------------------------------------------------------------------------ ; (defun arc( NumArc) ; Создание набора дуг на слое "контур" (setq nab_arc (ssget "_X" (list (cons 8 "контур") (cons 0 "ARC")))) ; Проверка, сформировался ли набор nab_arc ; (если нет, то предыдущая операция вернет nill ) (if (null nab_arc) (progn (princ "\Нет дуг на слое контур") ; сообщение об отсутствии ) ; конец progn (progn (setq arcpar (entget (ssname nab_arc NumArc))) ; параметры первой дуги (setq cen (cdr (assoc 10 arcpar))) ; координаты центра дуги в мировой си-стеме координат (setq cen_CurUCS (trans cen 0 1)) ; координаты центра дуги в текущей системе координат ); конец progn ); конец if ) ;=============================================================================================================== ; Вариант ввода исходной информации о детали (см. рис.1) ;;;(setq D (getint "D=") ;;; d1 (getint "d1=") ;;; d2 (getint "d2=") ;;; d3 (getint "d3=") ;;; d4 (getint "d4=") ;;; L (getint "L=") ;;; H (getint "H=") ;;; r (getint "r=") ;;; C (getint "C=") ;;; a (getint "a=") ;;; ) Вариант ввода данных о детали из файла. (setq nn (getint "введите номер детали")) (setq tab1 (open "c:\\Users\\САПР\\Втулка.dat" "r")) (if (= tab1 nil) (print "Файл не найден")) (progn

Page 28: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

28

(setq s (read-line tab1)) (setq nf 0) (while (and (/= s nil)(/= nn nf)) (setq s (read-line tab1)) (setq nf (atoi (substr S 1 3)))) (close tab1) (setq D (atof (substr S 4 5))) (setq d1 (atof (substr S 9 5))) (setq d2 (atof (substr S 14 5))) (setq d3 (atof (substr S 19 5))) (setq d4 (atof (substr S 24 5))) (setq H (atof (substr S 29 5))) (setq L (atof (substr S 34 5))) (setq c (atof (substr S 39 5))) (setq a (atof (substr S 44 5))) (setq r (atof (substr S 49 5))) ;-------------------------------------------------------------------- (command "_layer" "_new" "контур" "_color" "6" "контур" "_L" "" "контур" "_LW" "0.3" "контур" "") (command "_layer" "_new" "ось" "_color" "1" "ось" "_L" "осевая" "ось" "_LW" "0.1" "ось" "") (command "_layer" "_new" "размер" "_color" "3" "размер" "_L" "" "размер" "_LW" "0.1" "размер" "") (command "_layer" "_new" "штриховка" "_color" "2" "штриховка" "_L" "" "штриховка" "_LW" "0.1" "штриховка" "") ; Задание новой системы координат (setq P0 (getpoint "Начальная точка")) (command "_.UCS" "_O" P0) ;(command "пск" P0 "" ) (setq P0 (list 0 0)) ; Расчет точек верхней половины контура (setq P1 (list 0 (/ D 2)) P2 (list H (/ D 2)) P3 (list H (/ d1 2)) P4 (list L (/ d1 2)) P5 (list L 0)) (command "_layer" "_set" "контур" "") ; Вычерчивание верхней половины контура (линии 1-5) (command "_.Line" P0 P1 P2 P3 P4 P5 "") ;(command "отрезок" P0 P1 P2 P3 P4 P5 "") (command "_.zoom" "_e") ;(command "показать" "г") ; Построение фаски с равными катетами (С) ; 1. Задание параметров (катета) фаски (command "_.chamfer" "_d" C C) ;(command "фаска" "о" "с" "д" C C) ; 2 Определение точек для выбора отрезков, сопряженных фаской С

Page 29: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

29

; (точки для выбора определяются смещением относительно точки P4 ; влево и вниз соответственно) (setq Pc1 (list (- L 5) (/ D1 2)) Pc2 (list L (-(/ D1 2) 5))) ; В общем случае линии выбираются средними точками на них (setq Pc1 (MidPoint P4 p5 ) Pc2 (MidPoint P3 p4 )) ; 3. Построение фаски (command "_.chamfer" Pc1 Pc2) ;(command "фаска" Pc1 Pc2) ; Построение фаски с размерами a x 30 ; 1. Задание параметров - катета и угла - фаски a (command "_.chamfer" "_a" a "30" ) ;(command "фаска" "у" a "30" ) ; 2 Определение точек для выбора отрезков, сопряженных фаской а ; (точки для выбора определяются смещением относительно точки P2 ;влево и вниз соответственно) (setq Pa1 (list H (-(/ D 2) 5)) Pa2 (list (- H 5) (/ D 2))) ; В общем случае линии выбираются средними точками на них (setq Pa2 (MidPoint P1 p2 ) Pa1 (MidPoint P2 p3 )) ; 3. Построение фаски (command "_.chamfer" Pa1 Pa2) ;(command "фаска" Pa1 Pa2) ; Построение радиуса скругления r ; 1. Задание радиуса скругления (command "_.fillet" "_r" r "") ;(command "сопряжение" "д" r "") ; 2 Определение точек для выбора отрезков, сопряженных радиусом r ; (точки для выбора определяются смещением относительно точки P3 ;влево и вниз соответственно) (setq Pf1 (list (+ H 1) (/ D1 2)) Pf2 (list H (+ (/ D1 2) 1))) ; В общем случае линии выбираются средними точками на них (setq Pf1 (MidPoint P2 p3 ) Pf2 (MidPoint P3 p4 )) ; 3. Построение сопряжения (command "_.fillet" Pf1 Pf2) ;(command "сопряжение" Pf1 Pf2) ; Точки на оси детали (setq P01 (list (- 5) 0) P02 (list (+ L 5) 0) ) ; Построение нижней половины детали зеркальным отражением (command "_mirror" "_All" "" p01 p02 "") ;(command "зеркало" "в" "" p01 p02 "") (command "_layer" "_set" "ось" "") ;Построение оси детали (command "_.Line" P01 P02 "") ;(command "отрезок" P01 P02 "")

Page 30: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

30

(command "_.zoom" "_e") ;(command "показать" "г") ; Прочие линии чертежа ; Линии верхней половины (setq ang (* pi( / 30. 180.)) ; перевод угла фаски из градусов в рдианы P6 (list (- H (* a (/ ( sin ang) ( cos ang) ) )) (/ D 2)) P7 (list (car p6) 0) P8 (list H 0) P9 (list (- L C) (/ d1 2)) P10 (list (- L C) 0) ) (command "_layer" "_set" "контур" "") ; Линия 6 (command "_.Line" P6 P7 "") ;(command "отрезок" P6 P7 "") ; Линия 7 (command "_.Line" (list H (- (/ D 2) a)) P8 "") ;(command "отрезок" (list H (- (/ D 2) a)) P8 "") ; Линия 8 (command "_.Line" P9 P10 "") ;(command "отрезок" P9 P10 "") ; Линии нижней половины (setq P03 (list (- 5) (-(/ d2 2))) P04 (list (+ H 5) (-(/ d2 2))) P11 (list 0 (-(- (/ d2 2) (/ d3 2)))) P12 (list H (-(- (/ d2 2) (/ d3 2)))) P13 (list 0 (-(+ (/ d2 2) (/ d3 2)))) P14 (list H (-(+ (/ d2 2) (/ d3 2)))) P15 (list 0 (-(/ d4 2))) P16 (list L (-(/ d4 2))) ) ;Ось отверстия фланца (command "_layer" "_set" "ось" "") (command "_.Line" P03 P04 "") ;(command "отрезок" P03 P04 "") (command "_layer" "_set" "контур" "") ; Линия 9 (command "_.Line" P11 P12 "") ;(command "отрезок" P11 P12 "") ; Линия 10 (command "_.Line" P13 P14 "") ;(command "отрезок" P13 P14 "") ; Линия 11 (command "_.Line" P15 P16 "") ;(command "отрезок" P15 P16 "") ; Штриховка ; 1. Точки для выбора контуров(зон) штриховки (setq Ph1 (list (/ H 2) (- (+ (/ d4 2) 5 ))) ; точка первой зоны штриховки Ph2 (list (/ H 2) (- (- (/ D 2) 2)))) ; точка второй зоны штриховки

Page 31: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

31

(command "_layer" "_set" "штриховка" "") (command "_.bhatch" "_P" "_U" "45" "3" "_n" Ph1 Ph2 "") ;(command "-штрих" "с" "п" "45" "3" "н" Ph1 Ph2 "") ; Простановка размеров (command "_layer" "_set" "размер" "") ; 1. Диаметр D1 (setq P17 (list (car P9) (- (/ d1 2))) Ptd1 (list (+ L 20) 0)) (command "_.dimlinear" P9 P17 "_t" "%%c<>" Ptd1) ;(command "рзмлинейный" P9 P17 "т" "%%c<>" Ptd1) ; 2. Диаметр D (setq P18 (list 0 (- (/ D 2) )) Ptd (list (- 20) 0)) (command "_.dimlinear" P1 P18 "_t" "%%c<>" Ptd) ;(command "рзмлинейный" P1 P18 "т" "%%c<>" Ptd) ; 3. Длина L (setq P19 (list L (- (/ d1 2) C)) PtL (list (/ L 2) (+ (/ D 2) 20))) (command "_.dimlinear" P1 P19 "_t" "<>" PtL) ;(command "рзмлинейный" P1 P19 "т" "<>" PtL) ; 4. Фаска C (setq Ptc (list L (+ (/ d1 2) 10))) (command "_.dimlinear" P9 P19 "_t" "<>x45%%d" Ptc) ;(command "рзмлинейный" P9 P19 "т" "<>x45%%d" Ptc) ; 5. Толщина фланца H (setq P20 (list H (- (- (/ D 2) a))) PtH (list (/ H 2) (-(+ (/ D 2) 10)))) (command "_.dimlinear" P18 P20 PtH) ;(command "рзмлинейный" P18 P20 PtH ) ; 6.Угловой размер фаски а х 30 (setq P21 (list H ( - (/ D 2) a))) (setq mp1 (MidPoint P6 p21 ) mp2 (MidPoint P21 p8 ) Ptu (Polar P6 (* pi( / 100. 180.)) 15.) ) (command "_.dimangular" mp1 mp2 Ptu) ;(command "рзмугловой" mp1 mp2 Pt6) ; 7.Линейный размер фаски а х 30 (setq Pta ( list (+ 10 H) ( + 10 (/ D 2)))) (command "_.dimlinear" P21 P6 "_ver" Pta) ;(command "рзмлинейный" P18 P20 "в" PtH )

Page 32: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

32

;8.Размер d2 диаметра окружности, на которой лежат центры отверстий d3 ; Для задания этого размера необходимо создать новый стиль размера ; Для создания стиля требуется установить переменные ряда *DIM в необходи-мое значение. ; Инициализация системных переменных : (setvar "DIMSD1" 1) ;Режим подавления первой размерной линии (setvar "DIMSE1" 1) ;Режим подавления первой выносной линии ;После того, как установлены все необходимые значения, стиль надо сохранить: (command "_.dimstyle" "_s" "Half" "_y") ;(command "рзмстиль" "с" "HalfD" "П") ;Активизация стиля: (command "_.dimstyle" "_r" "Half") ;(command "рзмстиль" "в" "Half") ; Диаметр d2 (setq P22 (list 0 20) Pt7 (list (- 10) 0) ) ; Формирование размерного текста (setq rt (strcat "%%c" ( rtos d2))) (command "_dimlinear" P22 P03 "_t" rt Pt7) ; Восстановление обычного стиля (setvar "DIMSD1" 0) ;Режим включения первой размерной линии (setvar "DIMSE1" 0) ;Режим включения первой выносной линии (command "_.dimstyle" "_r" "ISO-25") ;(command "рзмстиль" "в" "ISO-25") ;;;) ; размер радиуса (setq P22 (polar (arc 1) (* pi(/ 220. 180.)) r )) (command "рзмрадиус" P22 P22) ;(command "_dimradius" P21 P21) )

Page 33: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

33

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Полещук Н.Н. Самоучитель AutoCAD2000 и VisualLisp. – 2-е изд.,

перераб. и доп. – СПб. : БХВ-Петербург, 2001. – 672 с. : ил.

2. Полещук Н.Н. VisualLisp и секреты адаптации AutoCAD. – 2-е изд.,

перераб. и доп. – СПб. : БХВ-Петербург, 2001. – 576 с. : ил.

Page 34: AutoCAD НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp...Команды и их параметры записываются так же, как и при работе в

Учебное электронное текстовое издание

Возмищев Николай Евгеньевич

Склярова Наталья Сергеевна

СОЗДАНИЕ ПРИЛОЖЕНИЙ ДЛЯ AutoCAD

НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ AutoLisp

Редактор Я.О. Смирнова Подготовка к публикации Н.В. Лутовой

Рекомендовано Методическим советом Разрешено к публикации 24.12.2013

Электронный формат − pdf Объем 1,6 уч.-изд. л.

620002, Екатеринбург, ул. Мира, 19

Информационный портал УрФУ htpp://www.urfu.ru