Функция type позволяет определять тип символа AutoLISP:
(type <символ>)
Тип аргумента: <символ> (имя функции или переменной).
Если аргумент <символ> не является именем функции или переменной с присвоенным значением, то возвращается nil. Другие варианты возвращаемого значения:
• ENAME — имя примитива AutoCAD;
• EXRXSUBR — имя приложения ObjectARX;
• FILE — указатель (дескриптор) файла;
• INT — целое число;
• LIST — список;
• PAGETB — таблица диспетчера страничной организации памяти;
• PICKSET — набор выбора;
• REAL — вещественное число;
• SAFEARRAY — безопасный массив;
• STR — строка;
• SUBR — встроенная функция AutoLISP;
• SYM — символ;
• VARIANT — вариант;
• USUBR — пользовательская функция AutoLISP;
• VLA-объект — объект Visual LISP, использующий технологию ActiveX.
(type 15) — возвращает INT;
(type +) — возвращает SUBR;
(type "15") — возвращает STR;
(type '(l5 16 17)) — возвращает LIST.
(defun isint (a)
(if (= (type a) 'INT) ; is TYPE integer?
T ; yes, return T
nil ; no, return nil
)
)
К функциям преобразований относятся следующие:
(itoa целое) – целое число в строковую константу.
(itoa 0) –> "0" (itoa 41) –> "41"
(atoi строка) – строковая константа в целое.
(atoi "-29") –> -29 (atoi " 3.9") –> 3 (!)
(atof строка) – строковая константа в действительное число
(itof " 3") –> 3.00 (atof "-29.03") –> -29.03
(fix число) - действительное в целое отбрасыванием дробной части
(fix 3) –>3 (fix 3.3) –>3 (fix -3.3) –>-3
(float число) – число в действительное
(float 15) –> 15.000 (float 15.7) –> 15.700
(rtos число режим точность) – вещественное число в строку в формате единиц [режим]:
[режим] – формат представления единиц: 1 – Scientific, 2 – Decinal ... и т.д.
(rtos 10,9453 1 3) –>"1.095E+01"
(rtos 10,9453 2 3) –>"10.945"
(rtos 17.5 2 2) ) –> "17.50"
Аргументы режим и точность соответствуют системным переменным AutoCAD LUNITS и LUPREC. Если опустили эти аргументы, то будут использованы текущие значения LUNITS и LUPREC.
(distof строка [режим]) – текстовую строку в вещественное число в формате единиц [режим]:
[режим]: 1 – Scientific, 2 – Decimal ... и т.д.
(distof "1" 2) –> 1.0
(distof "100" 1) –> 1E+03
(angtos [представление [точность]]) – преобразует угол в радианах в строку
представление: 0 – градусы
1 – град/мин/сек
2 – грады
3 – радианы
4 – геодезическое представление
точность – кол-во цифр после запятой.
Пример: (a – угол 180):
(angtos a 0 0) –> "180"
(angtos a 3 4) –> "3,1416r"
(angtos a 4 2) –> "W"
(angtos a 1 4) –> "180d 0'0""
(angtos l.00 0) — возвращает "57.296";
(angtos 1 0) — возвращает "57.296";
(angtos 3.14000 0) — возвращает "179.909".
(angtof "угол" [представление]) – преобразует строку, представляемую угол в различных формах, в вещественное число – угол в радианах.
(angtof "30" [0]) –> 0523599 – в радианах
(angtof "45,00" [0]) –> 0.785398
(angtof "45.00" [3]) –> 1.0177
Если формат угла в строке "угол" не совпадает с представлением, - > nil
(cvunit значение из в ) – преобразует значение одних единиц измерения в другие: из и в – строки из файла acad.unt
(cvunit 1 "minute" "second") –> 60.0
(cvunit 1.0 "inch" "mm") –> 25.4
(cvunit '(1.0 2.5) "ft" "in") –> (12.0 30.0)
(trans <точка> <СК-из> <СК-в> [<признак>]) –преобразует координаты точки из одной системы координат в другую.
<точка>-список трех действительных чисел, который можно интерпретировать либо как трехмерную точку, либо как трехмерное перемещение (вектор).
<из>-код системы координат, в которой находится указанная <точка>,
<в>-код системы координат, в которую происходит преобразование координат точки. Если присутствует факультативный аргумент <вектор> и его значение не равно нулю, то аргумент <точка> будет трактоваться как трехмерное перемещение. Аргументы <из> и <в> могут иметь следующие значения:
Целочисленный код берется из следующей таблицы:
-----------------------------------------------------------
| Код | Система координат |
-----------------------------------------------------------|
| 0 | Мировая (WCS) |
| 1 | Пользовательская (текущая UCS) |
| 2 | Экранная (DCS текущего |
| видового экрана) |
-----------------------------------------------------------
Пример: Пусть UCS повернута на угол 90 градусов против часовой
стрелки вокруг оси Z относительно WCS.
(trans ' (1.0 2.0 3.0) 0 1) возвращает (2.0 -1.0 3.0)
(trans ' (1.0 2.0 3.0) 1 0) возвращает (-2.0 1.0 3.0)
(type <символ>)
Тип аргумента: <символ> (имя функции или переменной).
Если аргумент <символ> не является именем функции или переменной с присвоенным значением, то возвращается nil. Другие варианты возвращаемого значения:
• ENAME — имя примитива AutoCAD;
• EXRXSUBR — имя приложения ObjectARX;
• FILE — указатель (дескриптор) файла;
• INT — целое число;
• LIST — список;
• PAGETB — таблица диспетчера страничной организации памяти;
• PICKSET — набор выбора;
• REAL — вещественное число;
• SAFEARRAY — безопасный массив;
• STR — строка;
• SUBR — встроенная функция AutoLISP;
• SYM — символ;
• VARIANT — вариант;
• USUBR — пользовательская функция AutoLISP;
• VLA-объект — объект Visual LISP, использующий технологию ActiveX.
(type 15) — возвращает INT;
(type +) — возвращает SUBR;
(type "15") — возвращает STR;
(type '(l5 16 17)) — возвращает LIST.
(defun isint (a)
(if (= (type a) 'INT) ; is TYPE integer?
T ; yes, return T
nil ; no, return nil
)
)
К функциям преобразований относятся следующие:
(itoa целое) – целое число в строковую константу.
(itoa 0) –> "0" (itoa 41) –> "41"
(atoi строка) – строковая константа в целое.
(atoi "-29") –> -29 (atoi " 3.9") –> 3 (!)
(atof строка) – строковая константа в действительное число
(itof " 3") –> 3.00 (atof "-29.03") –> -29.03
(fix число) - действительное в целое отбрасыванием дробной части
(fix 3) –>3 (fix 3.3) –>3 (fix -3.3) –>-3
(float число) – число в действительное
(float 15) –> 15.000 (float 15.7) –> 15.700
(rtos число режим точность) – вещественное число в строку в формате единиц [режим]:
[режим] – формат представления единиц: 1 – Scientific, 2 – Decinal ... и т.д.
(rtos 10,9453 1 3) –>"1.095E+01"
(rtos 10,9453 2 3) –>"10.945"
(rtos 17.5 2 2) ) –> "17.50"
Аргументы режим и точность соответствуют системным переменным AutoCAD LUNITS и LUPREC. Если опустили эти аргументы, то будут использованы текущие значения LUNITS и LUPREC.
(distof строка [режим]) – текстовую строку в вещественное число в формате единиц [режим]:
[режим]: 1 – Scientific, 2 – Decimal ... и т.д.
(distof "1" 2) –> 1.0
(distof "100" 1) –> 1E+03
(angtos [представление [точность]]) – преобразует угол в радианах в строку
представление: 0 – градусы
1 – град/мин/сек
2 – грады
3 – радианы
4 – геодезическое представление
точность – кол-во цифр после запятой.
Пример: (a – угол 180):
(angtos a 0 0) –> "180"
(angtos a 3 4) –> "3,1416r"
(angtos a 4 2) –> "W"
(angtos a 1 4) –> "180d 0'0""
(angtos l.00 0) — возвращает "57.296";
(angtos 1 0) — возвращает "57.296";
(angtos 3.14000 0) — возвращает "179.909".
(angtof "угол" [представление]) – преобразует строку, представляемую угол в различных формах, в вещественное число – угол в радианах.
(angtof "30" [0]) –> 0523599 – в радианах
(angtof "45,00" [0]) –> 0.785398
(angtof "45.00" [3]) –> 1.0177
Если формат угла в строке "угол" не совпадает с представлением, - > nil
(cvunit значение из в ) – преобразует значение одних единиц измерения в другие: из и в – строки из файла acad.unt
(cvunit 1 "minute" "second") –> 60.0
(cvunit 1.0 "inch" "mm") –> 25.4
(cvunit '(1.0 2.5) "ft" "in") –> (12.0 30.0)
(trans <точка> <СК-из> <СК-в> [<признак>]) –преобразует координаты точки из одной системы координат в другую.
<точка>-список трех действительных чисел, который можно интерпретировать либо как трехмерную точку, либо как трехмерное перемещение (вектор).
<из>-код системы координат, в которой находится указанная <точка>,
<в>-код системы координат, в которую происходит преобразование координат точки. Если присутствует факультативный аргумент <вектор> и его значение не равно нулю, то аргумент <точка> будет трактоваться как трехмерное перемещение. Аргументы <из> и <в> могут иметь следующие значения:
Целочисленный код берется из следующей таблицы:
-----------------------------------------------------------
| Код | Система координат |
-----------------------------------------------------------|
| 0 | Мировая (WCS) |
| 1 | Пользовательская (текущая UCS) |
| 2 | Экранная (DCS текущего |
| видового экрана) |
-----------------------------------------------------------
Пример: Пусть UCS повернута на угол 90 градусов против часовой
стрелки вокруг оси Z относительно WCS.
(trans ' (1.0 2.0 3.0) 0 1) возвращает (2.0 -1.0 3.0)
(trans ' (1.0 2.0 3.0) 1 0) возвращает (-2.0 1.0 3.0)