![]() |
Translate to: |
||||||
| Обратная связь | Новости САПР | Программы | Документация | Полезные советы | Обзорные статьи | ||
| Заказ и разработка | Каталог САПР | САПР-конференция | Библиотека ГОСТов | Наши соавторы | Коммерческое ПО | ||
AutoLISP содержит некоторое число заранее определенных функций. Каждая функция вызывается как список, первым элементом которого является имя функции (набранное на верхнем или нижнем регистре), а остальными - аргументы этой функции (если они есть). В этой главе вы найдете список всех основных функций AutoLISP (в алфавитном порядке). Вы увидите, что многие из функций стандартные функции LISP, их можно найти в каждом руководстве по языку программирования LISP. Другие же - уникальные, созданные специально для графических возможностей AutoCADа. Hекоторые расширенные функции описываются в следующих главах.
4.1. (+ <число> <число>...)
Эта функция возвращает сумму всех <чисел>. Она может использоваться как с целыми, так и с действительными числами. Если все <числа> целые, результат будет целым; если хотя бы одно <число> действительное, все целые будут преобразованы в действительные и результат будет действительным.
Hапример: (+ 1 2) возвращает 3
(+ 1 2 3 4.5) возвращает 10.500000
(+ 1 2 3 4.0) возвращает 10.000000
4.2. (- <число> <число>...)
Эта функция вычитает второе <число> из первого и возвращает разность. Если задано более двух <чисел>, то из первого вычитается сумма остальных. Если задано только одно <число>, оно вычитаться из 0, и возвращается результат. Функция может использоваться с целыми и действительными по стандартным правилам вычисления.
Hапример: (- 50 40) возвращает 10
(- 50 40.0 2) возвращает 8.000000
(- 50 40.0 2.5 возвращает 7.500000
(- 8) возвращает -8
4.3. (* <число> <число>...)
Эта функция возвращает произведение всех <чисел>. Функция может использоваться с целыми и действительными по стандартным правилам вычисления.
Hапример: (* 2 3) возвращает 6
(* 2 3 4.0) возвращает 24.000000
(* 3 -4.5) возвращает -13.500000
4.4. (/ <число> <число>...)
Эта функция делит первое <число> на второе и возвращает частное. Если задано более двух <чисел>, первое делится на произведение остальных и возвращается окончательное частное. Функция может использоваться с целыми и действительными по стандартным правилам вычисления.
Hапример: (/ 100 2) возвращает 50
(/ 100 2.0) возвращает 50.000000
(/ 100 20 2.0) возвращает 2.500000
(/ 100 20.0 2) возвращает 2.500000
(/ 100 20 2) возвращает 2
(/ 135 360) возвращает 0
(/ 135 360.0) возвращает 0.375000
4.5. (= <атом> <атом>...)
Функция сравнения "равно". Если все <атомы> эквивалентны – возвращается Т, если хотя бы один не равно - nil. В качестве аргументов могут использоваться как числа, так и строковые константы.
Hапример: (= 4 4.0) возвращает Т
(= 20 388) возвращает nil
(= 2.4 2.4 2.4) возвращает Т
(= 499 499 500) возвращает nil
(= "я" "я") возвращает Т
(= "я" "ты") возвращает nil
4.6. (/= <атом1> <атом2>)
Функция сравнения "не равно". Если <атом1> не эквивалентен <атому2> - возвращается Т, если они эквивалентны - nil. Функция неопределена для числа аргументов более двух.
Hапример: (/= 10 20) возвращает Т
(/= "ты" ты") возвращает nil
(/= 5.43 5.44) возвращает Т
4.7. (< <атом> <атом>...)
Функция сравнения "меньше, чем". Если первый <атом> меньше, чем второй - возвращается Т, если нет - nil. Если дано более 2-х <атомов>, то, если каждый предыдущий атом меньше последующего, - возвращается Т.
Hапример: (< 10 20) возвращает Т
(< "b" "c") возвращает T
(< 357 33.2) возвращает nil
(< 2 3 88) возвращает T
(< 2 3 4 4) возвращает nil
4.8. (<= <атом> <атом>...)
Функция сравнения "меньше или равно". Если первый <атом> меньше или равен второму - возвращается Т, если нет - nil. Если дано более 2-х <атомов>, то, если каждый предыдущий атом меньше или равен последующему, возвращается Т.
Hапример: (<= 10 20) возвращает T
(<= "b" "b") возвращает T
(<= 357 33.2) возвращает nil
(<= 2 9 9) возвращает T
(<= 2 9 4 5) возвращает nil
4.9. (> <атом> <атом>...)
Функция сравнения "больше". Если первый <атом> больше, чем второй - возвращается Т, если нет - nil. Если дано более 2-х <атомов>, то, если каждый предыдущий атом больше последующего, - возвращается Т.
Hапример: (> 120 17) возвращает T
(> "c" "b") возвращает T
(> 3.5 1792) возвращает nil
(> 77 4 2) возвращает T
(> 77 4 4) возвращает nil
4.10. (>= <атом> <атом>...)
Функция сравнения "больше или равно", Если первый <атом> больше или равен второму - возвращается Т, если нет - nil. Если дано более 2-х <атомов>, то, если каждый предыдущий атом больше или равен последующему, - возвращается Т.
Hапример: (>= 120 17) возвращает T
(>= "c" "c") возвращает T
(>= 3.5 1792) возвращает nil
(>= 77 4 4) возвращает T
(>= 77 4 9) возвращает nil
4.11. (~ <число>)
Функция возвращает логическое HЕТ (дополнение до единицы). <Число> должно быть целым.
Hапример: (~ 3) возвращает -4
(~ 100) возвращает -100
(~ -4) возвращает 3
4.12. (1+ <число>)
Результат функции - <число>, увеличенное на единицу. <Число> может быть целым или действительным.
Hапример: (1+ 5) возвращает 6
(1+ -17.5) возвращает -16.500000
4.13. (1- <число>)
Результат функции - <число>, уменьшенное на единицу. <Число> может быть целым или действительным.
Hапример: (1- 5) возвращает 4
(1- -17.5) возвращает -18.500000
4.14. (abs <число>)
Функция возвращает абсолютное значение <числа>. <Число> может быть целым или действительным.
Hапример: (abs 100) возвращает 100
(abs -100) возвращает 100
(abs -99.25) возвращает 99.250000
4.15. (and <выражение>...)
Функция возвращает результат выполнения логического И над списком выражений. Возвращаться будет nil, если любое из выражений имеет значение nil, иначе Т.
Hапример: (setq a 103)
(setq b nil)
(setq c "string")
тогда:
(and 1.4 a c) возвращает T
(and 1.4 a b c) возвращает nil
4.16. (angle <точ1> <точ2>)
Функция возвращает угол (в радианах) между 2-мя лучами, направленными из 2-х мерной <точ1>. Первый - вдоль оси Х в сторону положительного направления, второй - в сторону 2-х мерной <точ2>, где 2-х мерная точка - список 2-х действительных чисел.
Hапример: (angle '(1.0 1.0) '(1.0 4.0)) возвращает 1.570796
(angle '(5.0 1.33) '(2.4 1.33)) возвращает 3.141593
4.17. (angtos <угол> [<представление> [<точность>]])
Функция берет <угол> (действительное число, в радианах) и возвращает его преобразованным в строковую константу. Аргумент <представление> -
| ANGTOS | Формат преобразования |
| 0 | Градусы |
| 1 | Градусы/минуты/секунды |
| 2 | Грады |
| 3 | Радианы |
| 4 | Геодезическое представление |
Аргумент <точность> - целое число, указывает количество цифр после запятой. Аргументы <представление> и <точность> обращаются к переменным AutoCADa AUNITS и AUPREC. Если проигнорировать эти аргументы, то будут использованы текущие значения AUNITS и AUPREC.
Например, дано: (setq pt1 '(5.0 1.33))
(setq pt2 '(2.4 1.33))
(setq a (angle pt1 pt2))
тогда:
(angtos a 0 0) возвращает "180"
(angtos a 0 4) возвращает "180.0000"
(angtos a 1 4) возвращает "180d0'0""
(angtos a 3 4) возвращает "3.1416r"
(angtos a 4 2) возвращает "W"
4.18. (append <выражение>...)
Функция берет любое число списков (<выражений>) и сливает их вместе как один список.
(append '(a b) '(c d)) возвращает (A B C D)
(append '((a) (b)) '((c) (d))) возвращает ((A) (B) (C) (D))
APPEND требует, чтобы аргументы были списками.
4.19. (apply <функция> <список>)
Выполняется <функция> с аргументами, заданными <списком>.
Например: (apply '+ '(1 2 3)) возвращает 6
(apply 'strcat '("a" "b" "c")) возвращает "abc"
APPLY работает как со встроенными функциями (субр), так и с функциями, определенными пользователем (они создаются с помощью функций DEFUN или LAMBDA.
4.20. (ascii <строковая константа>)
Функция возвращает преобразование символа <строковая константа> в его ASCII-символьный код (целое число). Эта функция подобна функции ASC в Бейсике.
Например: (ascii "A") возвращает 65
(ascii "a") возвращает 97
(ascii "BIG") возвращает 66
4.21. (assoc <элемент списка> <структурированный список>)
Функция просматривает <структурированный список> по ключу <элемент списка> и возвращает точку входа <структур. списка>. Если <элемент списка> не найден, ASSOC возвращает nil. Например, допустим, что "al" определен как:
((name box) (width 3) (size 4.7263) (depth 5))тогда:
(assoc 'size al) возвращает (SIZE 4.7363)
(assoc 'weight al) возвращает nil
Структурированные списки часто используются для хранения данных, к которым можно иметь доступ по ключу. Это похоже на структуры и массивы в других языках программирования. Функция SUBST, описанная ниже в этой главе, обеспечивает удобный способ замены величины, найденной по ключу в структурированном списке.
4.22. (atan <число1> [<число2>])
Если <число2> не задано, ATAN вычисляет арктангенс <числа1>, в радианах. <Число1> может быть отрицательным; область допустимых значений от –pi до +pi радиан.
Например: (atan 0.5) возвращает 0.463647
(atan 1.0) возвращает 0.785398
(atan -1.0) возвращает -0.785398
(angtos (atan -1.0) 0 4) возвращает "-45.0000"
Если заданы оба числа, возвращается арктангенс (<число1>/<число2>) в радианах. Если <число2> - ноль, в зависимости от знака <числа1>, возвращается + или -1.570796 радиан (90 или -90 градусов).
4.23. (atof <строковая константа>)
Эта функция возвращает преобразование <строковой константы> в действительное число.
Например: (atof "97.1") возвращает 97.100000
(atof "3") возвращает 3.000000
4.24. (atoi <строковая константа>)
Эта функция возвращает преобразование <строковой константы> в целое число.
Например: (atoi "97") возвращает 97
(atoi "3") возвращает 3
(atoi "3.9") возвращает 3
4.25. (atom <элемент>)
Если <элемент> - список - возвращается nil, иначе Т. Любой элемент, который не является списком, считается как неделимый (атом).
Например: (setq a '(x y z))
(setq b 'a)
тогда:
(atom 'a) возвращает T
(atom a) возвращает nil
(atom 'b) возвращает T
(atom b) возвращает T
(atom '(a b c)) возвращает nil
Некоторые версии LISPa различаются в своей интерпретации функции ATOM, так что будьте внимательны при переходе из одной версии в другую.
4.26. (Boole <функция> <целое1> <целое2>...)
Это основная битовая Булева функция. <Функция> - это целое число между 0 и 15, представляющее одну из 16 возможных Булевых функций двух переменных. Эта функция побитово (логически) комбинирует целочисленные аргументы в соответствии с таблицей истинности, приведенной ниже.
| Целое 1 | Целое 2 | Код функции |
| 0 | 0 | 8 |
| 0 | 1 | 4 |
| 1 | 0 | 2 |
| 1 | 1 | 1 |
Каждый бит <целого1> берется совместно с соответствующим битом <целого2>, и помещается в одну из строк таблицы истинности. В зависимости от кода функции, стоящего в этой строке, результирующий бит будет либо 0, либо 1. Если в <функции> установлен подходящий бит, результирующий бит - 1, иначе - 0.
Некоторые значения <функции> эквивалентны стандартным Булевым операциям И, ИЛИ, исключающему ИЛИ, НЕ:
| Функция | Операция | Результирующий бит 1, если… |
| 1 | И | оба бита равны 1 |
| 6 | Искл. ИЛИ | только один из двух битов равен 1 |
| 7 | ИЛИ | каждый или оба бита равны 1 |
| 8 | НЕ | оба бита равны 0 (дополнение до 1) |
(Boole 1 12 5)задает логическое И значений 12 и 5. Результат 4. Подобно:
(Boole 6 6 5)задает логическое исключающее ИЛИ значений 6 и 5, возвращая 3.
Вы можете использовать другие значения <функции> для задания других Булевых операций, не имеющих стандартных имен. Например, если <функция> задана числом 4, результирующий бит задается, если соответствующий бит установлен в аргументе <целое2>, а не в <целое1>. Так:
(Boole 4 3 14)возвратит 12.
4.27. (boundp <атом>)
Функция возвращает - Т, если <атом> имеет некоторое значение (в широком смысле). Если <атом> не имеет никакого значения, или равен nil, возвращается nil.
Например, допустим: (setq a 2)
(setq b nil)
тогда:
(boundp 'a) возвращает T
(boundp 'b) возвращает nil
4.28. caar, cadr, cddr, cadar, и т.д.
AutoLISP содержит сцепления функций CAR и CDR, вплоть до 4 уровня глубины.
Например, допустим:(setq x '((a b) c d))тогда:
(caar x) эквивалентно (car (car x)) возвращает A
(cdar x) эквивалентно (cdr (car x)) возвращает (B)
(cadar x) эквивалентно (car (cdr (car x))) возвращает B
(cadr x) эквивалентно (car (cdr x)) возвращает C
(cddr x) эквивалентно (cdr (cdr x)) возвращает (D)
(caddr x) эквивалентно (car (cdr (cdr x))) возвращает D
В AutoLISPe CADR часто используется для "извлечения" координаты Y 2-х мерной и 3-х мерной точки (второй элемент списка, состоящего из 2-х или 3-х натуральных чисел). Точно так же CADDR используется для "извлечения" координаты Z 3-х мерной точки.
Например, дано: (setq pt2 '(5.2 1.0)) (2-х мерная точка)
(setq pt3 '(5.2 1.0 3.0)) (3-х мерная точка)
тогда:
(car pt2) возвращает 5.200000
(cadr pt2) возвращает 1.000000
(caddr pt2) возвращает nil
(car pt3) возвращает 5.200000
(cadr pt3) возвращает 1.000000
(caddr pt3) возвращает 3.000000
4.29. (car <список>)
Функция возвращает первый элемент <списка>. Если список пуст, возвращается nil.
Например: (car '(a b c)) возвращает A
(car '((a b) c)) возвращает (A B)
(car '()) возвращает nil
4.30. (cdr <список>)
Функция возвращает все элементы <списка>, кроме первого. Если <список> пуст, возвращается nil. (cdr '(a b c)) возвращает (B C)
(cdr '((a b) c)) возвращает (C)
(cdr '()) возвращает nil
Когда аргументом <списка> является точечная пара (смотрите CONS, ниже), CDR возвращает второй элемент, не заключая его в список.
(cdr '(a b)) возвращает B
(cdr '(1 "Text")) возвращает "Text"
4.31. (chr <число>)
Функция возвращает преобразованние целого числа в символьный код ASCII и результатом является строковая константа, (подобным образом действует функция CHR$ в языке Бейсик).
Например: (chr 65) возвращает "A"
(chr 66) возвращает "B"
(chr 97) возвращает "a"
4.32. (close <описатель файла>)
Эта функция закрывает файл и возвращает nil. <Описатель файла> извлекается из функции OPEN. После выполнения CLOSE описатель файла остается неизменным, но далее недопустимым.
Например, предположим, что Х допустимый файловый описатель открытого файла,
(close x)закроет соответствующий файл и возвратит nil.
4.33. (command <аргумент>...)
Эта функция выполняет команды AutoCADa в AutoLISPe и всегда возвращает nil. Аргументы представляют собой команды AutoCADa и их подкоманды; каждый аргумент вычисляется и посылается в AutoCAD, как ответ на соответствующий запрос. Командные имена и опции представляются как строковые константы, 2-х мерные точки - как списки из 2-х действительных чисел, и 3-х мерные точки - как списки из 3-х действительных чисел. Командные имена воспринимаются AutoCADом только после подсказки
"Command:" /команда:/Например:
(setq pt1 '(1.45 3.23))
(setq pt2 (getpoint "Enter a point: "))
(command "line" pt1 pt2)
(command "")
Если допустить, что подсказка
"Command :"
существует, то записанные выше выражения устанавливают значения для точки "pt1", запрашивают у Вас точку "pt2" и выполняют команду AutoCADa LINE по двум заданным точкам. Аргументы функции COMMAND могут быть строковыми константами, действительными числами, целыми или точками, то есть такими, какие ожидает получить от Вас выполняемая команда в ответ на ее запросы. Пустая строка ("") равносильна нажатию пробела на клавиатуре. Вызов COMMAND без аргумента равносилен нажатию CTRL C на клавиатуре, и прерывает большинство команд AutoCADa.
Команды, выполняемые функцией COMMAND не имеют эха на экране, если переменная AutoCADa CMDECHO (доступна из функций SETVAR и GETVAR) установлена равной нулю. Функция COMMAND - основной метод доступа из AutoLISPа к командам AutoCADа.
Если выполняется команда AutoCADа и в строке аргументов встречается символ PAUSE, то функция COMMAND приостановит свое действие, чтобы пользователь непосредственно ввел значение (или произвел отслеживание элемента чертежа). Это похоже на механизм паузы (с помощью backslash "\"), существующий для меню.
Если вы используете "прозрачную" команду в момент приостанова функции COMMAND, функция COMMAND остается в состоянии паузы до завершения "прозрачной" команды, после чего вернется к нормальному выполнению. Таким образом, вы можете в период паузы функции COMMAND использовать команды 'ZOOM' и 'PAN' или любые необходимые Вам "прозрачные" команды. Пауза буде продолжаться до тех пор, пока не будет введен имеющий силу аргумент и пока не выполняться все "прозрачные" команды.
Hапример:(command "circle" "5,5" pause "line" "5,5" "7,5" "")
начинается команда CIRCLE, устанавливающая центр круга в точку 5,5, и затем прервется, давая возможность пользователю задать радиус круга, например, методом слежения. После того как пользователь укажет желаемую точку или наберет с клавиатуры желаемый радиус, функция возвратится к своему нормальному выполнению и изобразит отрезок из точки 5,5 в точку 7,5. Ввод с помощью меню не исключается паузой AutoLISPа. Если активизировано меню и функция COMMAND требует ввода, находясь в паузе, запрос может быть удовлетворен с помощью меню. Если вы хотите также приостановить действие меню, в меню следует предусмотреть backslash. Kогда будет дан имеющий силу ответ, и функция COMMAND и функция меню возобновят свою работу.
ЗАМЕЧАHИЯ:4.34. (cond (<тест1> <результат>...)...)
Эта функция воспринимает любое число списков как аргументы. Она оценивает первый элемент списка (по очереди) до тех пор, пока не встретится отличный от nil. Затем вычисляется то выражение, которое следует за тестом и возвращает значение последнего выражения в подсписке. Если в подсписке только одно выражение (например, <результат> отсутствует), возвращается значение выражения <тест>. COND – основная функция условия в AutoLISPе.
Hапример, использование функции COND для вычисления абсолютного значения числа: (cond ((minusp a) (- a))
(t a)
)
Если в "а" было установлено значение -10, будет возвращено 10. Kак видно, COND может использоваться как функция типа "case" /в случае.../. Принято в качестве последнего (по-умолчанию) выражения <тест> использовать символ T. Еще один простой пример. Задавая запрос пользователя в символ "s", эта функция проверяет ответ и возвращает 1, если ответ "Y" или "y", а если ответ "N" или "n", то 0, иначе nil.
(cond ((= s "Y") 1)
((= s "y") 1)
((= s "N") 0)
((= s "n") 0)
(t nil)
)
4.35. (CONS <новый первый элемент> <список>)
Это основной конструктор списка. Эта функция берет элемент (<новый первый элемент>) и <список>, и возвращает список с добавленным элементом в начало списка.
Hапример: (cons 'a '(b c d)) возвращает (A B C D)
(cons '(a) '(b c d)) возвращает ((A) B C D)
Заметим, что первый элемент может быть атомом или списком.
CONS так же воспринимает атом на месте аргумента <списка>, конструируя структуру, известную как точечная пара. Показывая точечную пару на экране, AutoLISP печатает точку между первым и вторым элементами. Точечные пары занимают меньше места в памяти, чем обычные списки и можно использовать функцию CDR для извлечения второго атома.
(cons 'a 'b) возвращает (A . B)
(car (cons 'a 'b)) возвращает A
(cdr (cons 'a 'b)) возвращает B
4.36. (cos <угол>)
Эта функция возвращает косинус <угла>, где <угол> - выражается в радианах. Hапример: (cos 0.0) возвращает 1.000000
(cos pi) возвращает -1.000000
4.37. (defun <символ> <список аргументов> <выражение>...)
DEFIN - определяет функцию с именем <символ> (заметим, что имя функции автоматически берется в кавычки и поэтому не требуется этого делать самому). Имя, следующее за функцией - это список аргументов (возможно пустой), за которым следует (факультативно) косая черта (slach) и имена одного или более локальных символов функции. Kосая черта должна отстоять от первого локального символа и последнего аргумента, если он есть, хотя бы на один пробел. Если нет аргументов и локальных символов, которые следует объявлять, за именем функции следует поставить пустые скобки.
Hапример: (defun myfunc (x y) ... ) (функция берет два аргумента)
(defun myfunc (/ a d) ... ) (функция имеет два локальных символа)
(defun myfunc (x / temp) ... ) (один аргумент и один локальный символ)
(defun myfunc () ... ) (без аргументов и локальных символов)
За списком аргументов и локальных символов следует одно или более выражений, которые вычисляются в процессе выполнения функции. Сама по себе функция DEFUN возвращает имя определяемой функции. Kогда функция, определенная таким образом вызывается, ее аргументы вычисляются и связываются в список аргументов. Локальные символы могут использоваться внутри функции без изменения мх связи на внешних уровнях. Функция будет возвращать результат последнего вычисленного выражения. Все предыдущие выражения будут иметь только побочный эффект. Сама по себе функция DEFUN возвращает только имя определяемой функции. Hапример:
(defun add10 (x)
(+ 10 x)
) возвращает ADD10
(add10 5) возвращает 15
(add10 -7.4) возвращает 2.60000
и:
(defun dots (x y / temp)
(setq temp (strcat x "..."))
(strcat temp y)
) возвращает DOTS
(dots "a" "b") возвращает "a...b"
(dots "from" "to") возвращает "from...to"
4.37.1. Библиотека символов и Автоматическая загрузка.
Определения функций могут храниться в файлах и загружаться, используя функцию LOAD в AutoLISPe, описанную ниже. Если существует файл "acad.lsp", то AutoLISP загрузит их автоматически каждый раз когда будет введен Чертежный редактор AutoCADa. Вы можете использовать это обстоятельство для создания библиотеки используемых функций и быть уверенным, что они всегда под рукой, когда понадобятся.
Любой библиотечный ".lsp" файл может содержать выражения вне функции DEFUN. Таким образом, загружая файл, вычисляющий некоторые выражения, включая именованные функции, Вы можете выполнять эти выражения и функции автоматически, когда бы этот файл не был загружен. Однако, загрузка файла "acad.lsp" производится еще до полной инициализации Чертежного Редактора AutoCADа, поэтому не следует использовать функции COMMAND в файле "acad.lsp" (вне функции DEFUN).
4.37.2. С:ХХХ функции - Добавление команд в AutoCAD.
Вы можете добавить новые команды в AutoCAD, используя функцию DEFUN чтобы определить эти команды как функции. Для того чтобы ими пользоваться как командами AutoCADа, такие функции должны удовлетворять следующим правилам:
(defun C:PSQUARE (/ pt1 pt2 pt3 pt4 len)
(setq pt1 (getpoint "Lower left corner: ")) /Hижний левый угол: /
(setq len (getdist pt1 "Length of one side: ")) /Длина стороны: /
(setq pt2 (polar pt1 0.0 len))
(setq pt3 (polar pt2 (/ PI 2.0) len))
(setq pt4 (polar pt3 PI len))
(command "PLINE" pt1 pt2 pt3 pt4 "C")
)
Функции определенные таким образом могут вызываться простым вводом "ХХХ" части имени функции, когда появилось сообщение AutoCADa "Command:". Если "ХХХ" не является известной командой, AutoCAD пытается вызвать функцию AutoLISPa "C:XXX" без параметров. Для приведенной выше функции C:PSQUARE диалог будет таким:
Command: PSQUARE
Lower left corner: (
ввод точки
)
Length of one side: (
ввод растояния
)
После чего функция вызовет команду AutoCADа PLINE и ответит на ее запросы для вычерчивания заданного квадрата. Добавление команд к AutoCADу таким образом - очень мощное средство AutoLISPa. Однажды определенная, новая команда может пользоваться всеми возможностями AutoLISPa. Фактически использование новой команды не требует заключать имя команды в скобки, так что команды, которыми оперирует AutoLISP используются так же как любые другие команды AutoCADa.
Copyright © Сайт поддержки пользователей САПР