- •Программирование на AutoLISP в
- •LISP
- •Извлечение из списков (setq a ‘(5 3 8 4 9))
- •Поиск подсписка
- •Математические функции
- •В AutoCAD входит интерпретатор AutoLISP,
- •Например, для получения суммы трех чисел можно ввести:
- •Если P- точка , то (car P) – x (cadr P) – y
- •Зарезервированные символы AutoLISP:
- •Локальные символы.
- •2. Доступ к примитивам:
- •(entdel e) - удалить или восстановить примитив е;
- •3. Организация диалога.
- •Ввод точек
- •Ввод расстояния
- •Например:
- •Исполнение команд.
- •Манипуляции с набором
- •(setq S (ssget …)) S – переменная набора, для ее использования:
- •Доступ к таблицам
- •Управление экраном
- •(redraw) – перерисовка
- •Геометрические вычисления
- •Преобразование чисел
- •Пример
- •(command “pline” pt1 “w” w “” (list (car pt1) (cadr pt2)) pt2
Манипуляции с набором
примитивов
(ssget [“режим”] [<Точка1>] [<Точка2>]) (ssget) действует как команда select (ssget “w” ‘(0 0) ‘(5 5))
(ssget “L”)
(ssget “x” <фильтр>)
(ssget “x” (cons 0 “circle”)) – набор всех окружностей
(ssget “x” (list (cons 8 “1”) (cons 62 1))) набор красных примитивов на слое 1
(setq S (ssget …)) S – переменная набора, для ее использования:
Select objects:!S
(sslength <набор>) число примитивов.
(ssname <набор> <номер>) имя примитива из набора по номеру (от 0).
(setq S (ssadd)) пустой набор.
(setq SS (ssadd e)) набор SS, содержащий e (ssadd e1 SSS) SSS:=SSS+e1
(ssdel e S) S:=S-e
(ssmemb e S) e принадлежит S? возврат e иначе nil
Доступ к таблицам
Таблицы – описание поименованных объектов (слои, блоки, именованные виды, ПСК, типы линий, образцы штриховки и т.п.).
(tblnext <таблица> [<первый>]) (tblsearch <таблица> <элемент>)
Таблица “LAYER”, “LTYPE”, “VIEW”, “STYLE”, “BLOCK” …
Управление экраном
(graphscr)
(textscr)
(grdraw <от> <к> <цвет> [<подсветка>]) – рисует вектор
Цвет=-1 – рисование цветом фона
(grtext <№ бокса> <текст> [<подсветка>]) – вывод в зону экранного меню
(redraw) – перерисовка
(redraw e) – перерисовка примитива с именем e
(redraw e <режим>) Режим:
1 – перерисовка;
2 – стирание (рисование цветом фона);
3 – подсветка;
4 – убрать подсветку.
Геометрические вычисления
(angle <Tочка1> < Tочка2>) - возвращает угол в радианах относительно оси Х.
(distance <Tочка1> <Tочка2>) - возвращает расстояние между двумя точками.
(inters <Tочка1> <Tочка2> <Tочка3> <Tочка4> [<отрезок>]) – возвращает точку пересечения прямых или отрезков
Если аргумент <отрезок> присутствует и не равен NIL, возвращает точку пересечения бесконечных прямых, заданных отрезками Tочка1Tочка2 и Tочка3Tочка4.
Если аргумент <отрезок> отсутствует или равен NIL, возвращает точку пересечения отрезков Tочка1Tочка2 и Tочка3Tочка4. Возвращает NIL, если прямые (отрезки) не пересекаются.
(polar <Tочка> <угол> <длина радиус- вектора>) - возвращает точку в полярной системе координат.
(osnap <Tочка> <список режимов привязки>) - возвращает точку в окрестностях <Tочка>, соответствующую условиям привязки (если такая точка не будет найдена, возврат – NIL).
Преобразование чисел
(rtos <число> [<режим> [<точность>]]) -
возвращает строку, содержащую число в заданном формате.
<режим>(LUNITS):
•1 - научный;
•2 - десятичный;
•3 - инженерный;
•4 - архитектурный;
•5 - дробные числа.
<точность>(LUPREC) - точность числа
Пример |
программы |
на |
AutoLISP, |
которая |
рисует прямоугольник |
полилинией |
заданной ширины.
(defun c:rectang ( / cmde w pt1 pt2 os) (setq cmde (getvar “cmdecho”)) (setvar “cmdecho” 0 )
(setq os (getvar “osmode”)) (setvar “osmode” 0 )
(setq w (getreal “\nширина: ”)
pt1 (getpoint “\nпервый угол”) pt2 (getcorner pt1 “\nвторой угол”)
)