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

В AutoLISP нет программ – есть функции. Программа состоит из функций и сама является функцией.

Пользователь может создавать свои функции и применять их параллельно со встроенными. Не рекомендуется в качестве имен своих функций брать зарезервированные имена, т. к. это приведет к некорректной работе отдельных команд системы AutoCAD. Для того чтобы получить полный перечень зарезервированных символов AutoLISP, можно воспользоваться функцией atoms-family, имеющей следующий синтаксис:

(atoms-family <форма> [<список>])

Если аргумент <список>, который содержит строковые имена символов, проверяемых на резервирование, задан, то функция возвращает имена тех символов, которые отнесены в данной версии системы AutoCAD к резервированным; если аргумент <список> не задан, то функция возвращает полный список зарезервированных символов (основу этого списка составляют имена функций); аргумент <форма> может принимать значения 0 или 1, он влияет на форму возвращаемого списка (при 0 в список помещаются символы, при 1 - строки).

Пример:

(acad_strisort (atoms-family l)) - возвратит список зарезервированных символов, который будет тут же с помощью функции acad_strlsort отсортирован по алфавиту.

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

(defun <имя> ([<аргументы>] [/ <переменные>]) <выражения>) ≈ описывает тело функции, ее аргументы и локальные переменные (т. е. переменные, которые не являются глобальными и имеют действие только в теле самой функции; вне тела функции эти символы не определены); возвращаемым значением функции является результат последнего вычисленного выражения ее тела.

Пример:

(defun oursum (al а2 а3 / s)

(setq s (+ a1 а2))

(- s a3)

) ; конец тела функции

Здесь определена функция с именем oursum. У функции три аргумента: a1, а2 и аЗ ≈ вместо них AutoLISP подставит значения, с которыми эта функция будет вызвана. Переменная s используется для временного хранения результата операции суммирования. В теле функции всего два выражения: первое вычисляет сумму a1 и а2 и сохраняет ее в переменной s, а второе вычисляет разность между s и а3. Вычисленная разность является значением последнего выражения в теле функции, поэтому является и возвращаемым значением функции oursum. Как аргументы al, а2 и а3, так и переменная s являются локальными переменными, т. е. их значения не доступны вне тела функции. Для того чтобы функцией oursum можно было воспользоваться в текущем рисунке AutoCAD, ее необходимо предварительно сохранить в текстовом файле с расширением lsp (например, ourfunctions.lsp) и затем загрузить этот файл с помощью функции load:

(load "ourfunctions.lsp")

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

(setq newvall (oursum 55.02 0.933 -2.64))

Разумеется, при обращении к функции oursum в качестве аргументов могут быть использованы любые выражения, результатами вычисления которых будут значения необходимого типа (в данном примере – это три вещественных числа).

 


СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1 Романычева, Э.Т. Инженерная и компьютерная графика / Романычева Э.Т., Соколова Т.Ю., Шандурина Г.Ф. . – 2-е изд., перераб. – М. : ДМК Пресс, 2001. – 592 с. : ил. – ISBN 5-94074-051-0.

2 Ткачев Д. AutoCAD 2002: Самоучитель.- СПб: Питер, К. : БХВ, 2003. – 416 с. : ил. – ISBN 5-318-00788-0.

3 Ткачев Д.А. AutoCAD 2004: Самоучитель. - СПб: Питер, 2005. – 432 с. : ил.

4 Хрящев В. Моделирование и создание чертежей в системе AutoCAD / В. Хрящев, Г. Шипова.: СПб. БХВ – Питербург, 2004. – 224 с.

 

 

Навчальне видання

 

Комп'ютерна графіка

 

Конспект лекцій

для студентів спеціальності 6.050101
«Інформаційні технології проектування»

очної і заочної форм навчання

 

 

Укладачі САВИЦЬКИЙ Василь Васильович

 

 

Редактор

 

Підп. до друку . Формат 60х80 1/16.

Папір офсетний. Ум. друк. арк. . Обл.-вид. арк.

Тираж 50 прим. Зам №

 

Видавець і виготівник

«Донбаська державна машинобудівна академія»

84313, м. Краматорськ, вул. Шкадінова, 72.

Свідоцтво про внесення суб’єкта видавничої справи

до Державного реєстру

серія ДК № 1633 від 24.12.2003 р.