| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
!GETPOINT ! * ! ! ! * ! * ! * !
!-----------!---------!-----!--------!-----------!----------!------------!
!GETCORNER ! * ! ! ! * ! * ! * !
!-----------!---------!-----!--------!-----------!----------!------------!
!GETKWORD ! * ! ! ! ! ! !
!-----------!---------!-----!--------!-----------!----------!------------!
!GETSTRING ! ! ! ! ! ! !
!-----------!---------!-----!--------!-----------!----------!------------!
! GETVAR ! ! ! ! ! ! !
!___________!_________!_____!________!___________!__________!____________!
- 45 -
Руководство пользователя по АВТОЛИСПу
Факультативный аргумент INITGET-функции <строка> определяет список
ключевых слов, которые будут проверяться в последующем запросе GETxxx,
если пользователь произвел ввод неправильного типа (например, точку для
GETPOINT). Если ввод пользователя соответствует одному из ключевых слов
из этого списка, это ключевое слово возвращается GETxxx функцией как
результат типа STRING (строковая константа). Программа пользователя может
тестировать ключевые слова и выполнять желаемые действия для каждого из
них. Если ввод пользователя недозволенного типа и не соответствует ни
одному из ключевых слов, AutoCAD предложит пользователю повторить ввод.
Список ключевых слов может быть такой формы :"Key1 KEy2 KEY3,ABBREV3".
Отдельные ключевые слова отделяются пробелами. Сокращение необязательно и
возможны два способа специфицирования. Hеобходимая для ввода часть
ключевого слова может быть выделена заглавными буквами, остальная часть
строчными или необходимая часть может быть повторена через запятую после
ключевого слова. Второй способ применяется в случае использования
иностранного языка, где переход из прописных в заглавные буквы сложен или
невозможен . В обоих случаях длина необходимой части - минимальная длина,
которая должна быть для точного различения. (Для метода с разделением
запятой подразумевается, что сокращение - это начало ключевого слова.)
Hапример
"LTYPE,LT" и
"LType"
эквивалентные спецификации. Будет восприниматься любой ввод пользователя
из "LTYPE", "LTYP", "LTY" или "LT", но "L" недостаточно, неподходят и
"LTSCALE" "LTYPEX".
Рассмотрим следующую функцию, определенную пользователем:
(defun getnum (/ x)
(initget 1 "Pi Two-pi")
(setq x (getreal "pi/Two-pi/<число>:"))
(cond ((eq x "Pi") pi)
((eq x "Two-pi:") (* 2.0 pi))
(T x)
)
)
Здесь INITGET препятствует пустому вводу и устанавливает список из двух
ключевых слов "Pi" и "Two-pi". Затем используется GETREAL для извлечения
вещественного числа с помощью подсказки "Pi/Two-pi/<число>:" и результат
помещается в локальный символ Х. Если пользователь вводит число, это
число возвращается функцией GETNUM. Однако, если пользователь вводит
ключевое слово "Pi" (или просто "P"), GETPOINT возвращает ключевое слово
"Pi". Функция COND фиксирует это и в этом случае возвращает значение
pi. Kлючевое слово "Two-pi" трактуется аналогично.
=========================================================================
- 46 -
Руководство пользователя по АВТОЛИСПу
Список управляющих сигналов и ключевых слов, устанавливаемые INITGET,
применимы только к следующему за INITGET вызываемому GETxxx и затем
автоматически сбрасываются. Это позволяет Getxxx-функций избежать
необходимости при следующем вызове очищать специальные состояния.
=========================================================================
4.61 (insers <точка1> <точка2> <точка3> <точка4> [])
Функция INTERS проверяет два отрезка на пересечение и возвращает точку
пересечения или nil, если они не пересекаются. <Точка1> и <точка2>
крайние точки первого отрезка, <точка3> <точка4> - крайние точки второго
отрезка. Если факультативный аргумент присутствует и является nil,
то отрезки будут восприниматься бесконечной длины и INTERS будет возвращать
точку пересечения даже, если она находится за крайними точками одного или
обоих отрезков. Если Если же аргумент отсутствует или не является
nil, то точка пересечения должна находится на обоих отрезках или INTERS
вернет nil.
Hапример, дано:
(setq a '(1.0 1.0) b '(9.0 9.0))
(setq c '(4.0 1.0) c '(4.0 2.0))
тогда:
(inters a b c d) возвращает nil
(inters a b c d T) возвращает nil
(inters a b c d nil) возвращает (4.000000 4.000000)
4.62 (itoa <целое>)
Эта функция возвращает преобразование целого числа в строковую константу.
Hапример:
(itoa 33) возвращает "33"
(itoa -17) возвращает "-17"
4.63 (lambda <аргументы> <выражение> ...)
Эта функция определяет "анонимную" функцию. Она обычно используется,
когда при определении новоя функции не именуется. Это так же
делает замысел программиста более очевидным, за счет того, что функция
находится там же, где она используется. LAMBDA возвращает значение
последнего <выражения> и часто используется в связи с APPLY и/или MAPCAR
для выполнения функции над списком.
Hапример:
(apply '(lambda (x y z)
(* x (-y z))
)
'(5 20 14)
) возвращает 30
и:
(mapcar '(lambda (x)
- 47 -
Руководство пользователя по АВТОЛИСПу
(setq counter (1+ counter))
(* x 5)
)
'(24 -6 10.2)
) возвращает (10 20 -30 51.000000)
4.64 (last <список>)
Эта функция возвращает последний элемент списка. <Список> не должен быть
равен nil. Hапример:
(last '(a b c d e)) возвращает E
(last '(a b c (d e))) возвращает (D E)
Kак видно, LAST возвращает либо атом либо список.
=========================================================================
Hа первый взгляд LAST может являться хорошим путем для извлечения
координаты Y точки. Хотя это так для 2-х мерных точек (список из 2-х
действительных чисел). LAST будет возвращать координату Z в случае
3-х мерной точки. Чтобы ваши функции работали как следует при задании
и 2-х мерных и 3-х мерных точек, мы рекомендуем вам использовать CADR
для извлечения координаты Y и CADDR для извлечения координаты Z.
=========================================================================
4.65 (length <список>)
Эта функция возвращает целое число, означающее число элементов в
<списке>. Hапример:
(length '(a b c d)) возвращает 4
(length '(a b (c d))) возвращает 3
(length '()) возвращает 0
4.66 (list <выражение> ...)
Эта функция берет любое чосло выражений (<выражение>) и организует из
них строку, возвращая список.
Hапример:
(list 'a 'b 'c) возвращает (A B C)
(list 'a '(b c) 'd) возвращает (A (B C) D)
(list 3.9 6.7) возвращает (3.90000 6.70000)
В AutoLISP эти функции часто используются для определения значений
2-х и 3-х мерных точек (список из 2-х или 3-х действительных чисел).
4.67 (listp <элемент>)
Эта функция возвращает T, если <элемент> список, иначе nil.
Hапример:
(listp '(a b c)) возвращает T
 |
|
adfun.ru
|
|
|
|