Page 24 - AutoLISP и Visual LISP в среде AutoCAD
P. 24
Нет необходимости записывать площадь в переменную. Она является
возвращаемым значением потому, что оказалась последним выражением в
функции. При вызове функции Geron ей должны быть переданы три
аргумента, значения которых запишутся в локальные переменные a, b, c,
например: (Geron 3 4 6) или (Geron 2.5 6.8 3.3).
Если имя пользовательской функции начинается с "C:", то после ее
загрузки в AutoCad появится новая команда с именем, совпадающим с
именем функции. При этом пользовательская функция не может иметь
аргументов. Организовать передачу данных такой функции можно
интерактивно, т.е. запрашивая у пользователя.
Пример создания функции рисующей прямоугольник:
(defun C:MyBOX (/ pt1 pt2)
(setq pt1 (getpoint "\nПервая точка: "))
(setq pt2 (getcorner pt1 "\nВторая точка: "))
(command "._Pline"
pt1
(list (car pt2) (car (cdr pt1)))
pt2
(list (car pt1) (car (cdr pt2))) "_C"
); command
(prin1)
); end defun
В приведенном примере используются функции работы со списками (list,
car, cdr), описание которых представлено в следующем подразделе.
23