
- •Функции autolisp
- •Арифметические функции
- •Логические функции
- •Функции вычислений
- •Функции преобразования данных
- •Функции обработки строк
- •Функции обработки списков и точечных пар
- •Функции ввода данных и указания объектов
- •Функции печати, вывода сообщений и доступа к файлам
- •Функции доступа к примитивам AutoCad
- •Функции работы с памятью, приложениями и реестром Windows
- •Графические примитивы autocad в функции «command»
- •Бесконечная прямая линия
- •Многоугольник
- •Мультилиния
- •Окружность
- •Отрезок
- •Полилиния
- •Прямоугольник
- •Размеры
- •Цвет (установка текущего рабочего цвета)
- •Штриховка
- •Системные переменные autocad
- •Примеры использования элементов диалоговых окон
Функции преобразования данных
type – определяет тип символа.
float – преобразование целого числа в вещественное.
(float c)
itoa – преобразует целое число в строку.
(itoa c)
rtos – преобразует вещественное число в строку.
(rtos v Режим Точность)
Режим: 1 – научный (экспоненциальный);
2 – десятичный;
3 – инженерный (футы и дюймы);
4 – архитектурный (футы и дюймы);
5 – дробный.
Если режим не задан, то форма представления определяется системной переменной LUNITS.
Точность – количество знаков после десятичной точки. Если точность не задана, то она определяется системной переменной LUPREC.
(rtos 10.9453 1 3) “1.095E+01”
(rtos 10.9453 2 3) “10.945”
…
На вид возвращаемой строки может оказывать влияние системная переменная UNITMODE.
atoi – преобразует строку в целое число.
(atoi s)
(atoi “12345678901”) – преобразование будет выполнено с ошибкой, так как количество цифр превысило максимум.
(atoi “55kg500g”) 55 (недопустимые символы и следующие за ними теряются).
atof – преобразует строку в вещественное число.
(atof s)
angtof – преобразует строку в вещественное число, являющееся величиной угла в радианах.
(angtof s p)
p – представление: 0 – градусы;
1 – градусы, минуты, секунды;
2 – грады;
3 – радианы;
4 – топографические единицы.
Если p опущено, то в качестве его значения принимается значение системной переменной AUNITS.
angtos – преобразует значение угла в радианах в строку.
(angtos u p t)
p – представление (см. функцию angtof); если p опущено, то в качестве его значения принимается значение системной переменной AUNITS.
t – точность; если точность не задана, то она определяется системной переменной AUPREC.
На вид возвращаемой строки может оказывать влияние системная переменная UNITMODE.
Необходимо также учитывать значение системной переменной ANGBASE.
distof – преобразует строку в вещественное число.
(distof s r)
r – режим (см. п.4, см. LUNITS).
trans – преобразует координаты точки из одной системы координат в другую. Системы координат: мировая (МСК), текущая или пользовательская (ТСК или ПСК), экранная (ЭСК), экранная листа (ЭСКЛ).
cvunit – преобразует значение из одной системы единиц в другую.
(cvunit z se1 se2)
(cvunit 1 “minute” “hour”) 0.016667
Сообщения о неправильном типе данных:
error: bad argument type: нужныйтип фактическийтип.
Функции обработки строк
chr – получение символа по коду действующей таблицы символов.
(chr c)
(chr 192) “А” (русская)
ascii – получение кода первого символа строки текста по коду действующей таблицы символов.
(ascii s)
(ascii “ABCD”) 65 (все символы, кроме первого, игнорируются).
read – читает аргумент, являющийся строкой, до первого пробела.
Если прочитанная строка имеет вид числа или списка, то она сохраняется в виде числа или списка.
Пример чтения данных из внешнего файла с сохранением в виде списка:
(defun myf ()
(setq df (open “имяфайла” “r”)
a (read (strcat “(“ (read-line df) “)” )) ;a – список.
…
)
)
strcase – преобразование строки в верхний или нижний регистр.
(strcase s) или (strcase s nil) – преобразование в верхний регистр.
(strcase s T) – преобразование в нижний регистр.
strcat – сцепление строк.
См. пример к п.3.
strlen – вычисление суммарной длины всех строк-аргументов.
(strlen s1 s2 …)
substr – выделение подстроки.
(substr строка начало количество)
начало – номер символа в строке, с которого начинается подстрока;
количество – количество символов в подстроке.
Пример чтения данных из внешнего файла с сохранением первых двух символов в виде вещественного числа:
(defun myf ()
(setq df (open “имяфайла” “r”)
a (read-line df) ;a – строка
a (substr a 1 2) ;a – подстрока
a (atof a) ;a – вещественное число
…
)
)
Операции с переменной a можно записать без промежуточного сохранения результатов:
(setq df (open “имяфайла” “r”)
a (atof (substr (read-line df) 1 2))
…
)
wcmatch – проверка строки на соответствие шаблону.
vl-string->list – преобразование строки в список с кодами символов.
(vl-string->list “LISP”) ‘(76 73 83 80)
vl-list->string – преобразование списка с кодами символов в строку.
(vl-list->string ‘(76 73 83 80)) “LISP”
vl-string->elt – вычисление кода символа, расположенного в строке на месте с заданным номером. Первый символ имеет номер 0.
(vl-string->elt строка номер)
(vl-string->elt “LISP” 3) 80 (код символа “P”)
vl-string-left-trim – удаление символов, начиная с первого символа строки, до тех пор, пока не встретится символ, который не входит в перечень удаляемых.
(vl-string-left-trim перечень строка)
(vl-string-left-trim “корпус” “проспект”) “ект”
vl-string-right-trim – удаление символов, начиная с последнего символа строки, до тех пор, пока не встретится символ, который не входит в перечень удаляемых.
(vl-string-right-trim перечень строка)
(vl-string-right-trim “лоция” “дистанция”) “дистан”
vl-string-trim – является комбинацией функций vl-string-left-trim и vl-string-right-trim.
(vl-string-trim “декларация” “дистанция”) “стан”
vl-string-mismatch – сверяет две строки, начиная с заданных позиций, и возвращает количество совпавших символов. Отсчет позиций в строке начинается с 0.
(vl-string-mismatch s1 s2 p1 p2 r)
s1, s2 – сверяемые строки.
p1, p2 – номера позиций в сверяемых строках; по умолчанию p1=p2=0;
Если r задан и имеет значение, отличное от nil, то при сверке регистр символов игнорируется.
vl-string-position – поиск символа с заданным кодом в строке, начиная с заданной позиции. Возвращает номер позиции первого найденного символа. Отсчет позиций в строке начинается с 0.
(vl-string-position k s n kon)
k – код;
s – строка;
n – номер позиции, с которой начинается поиск; если n не задан, то принимается n=0;
kon – необязательный параметр; если kon не nil, то поиск идет с конца строки.
(setq a “LISP”
a (vl-string-position 73 a)) ;a=1 (код символа I)
vl-string-search – поиск заданной последовательности символов в строке, начиная с заданной позиции. Отсчет позиций в строке начинается с 0.
(vl-string-search ps str n)
ps – последовательность символов;
str – строка;
n – номер позиции, с которой начинается поиск; если n не задан, то принимается n=0.
(vl-string-search “in” “training” 4) 5.
vl-string-subst – замена в строке одной последовательности символов на другую, начиная с определенного номера позиции. Отсчет позиций в строке начинается с 0.
(vl-string-subst ns ss str n)
ns – новые символы;
ss – старые символы;
str – строка;
n – номер позиции, с которой начинается поиск; если n не задан, то принимается n=0.
(vl-string-subst “мо” “ка” “каталка”) “моталка” (происходит замена только первых найденных символов).
vl-string-translate – замена в строке символов одной группы на символы другой группы.
(vl-string-translate “19” “ab” “1971”) “ab7a”
vl-symbol-name – выводит имя символа в виде текстовой строки.