- •Утверждено
- •Программирование на языке AutoLisp
- •1. Переменные языка AutoLisp
- •1.1 Системные переменные пакета AutoCad
- •1.2 Переменные языка AutoLisp определенные пользователем
- •2. Типы данных языка AutoLisp
- •3. Функции присвоения
- •4.2 Работа со строками, функции преобразования, проверки типов данных.
- •4.3 Логические функции Автолиспа.
- •5. Работа со списками
- •6. Использование функции get для ввода данных.
- •7. Работа с геометрическими описаниями объектов
- •8. Условное ветвление программ
- •9. Организация циклов
- •10. Вызов команд Автокада из программы на языке AutoLisp
- •11. Управление отображением
- •12. Вывод данных в командную строку
- •13. Файловый ввод - вывод
- •14. Определение функции
- •15. Отладка программы.
- •16. Доступ к примитивам и средствам Автокада
- •Функции AutoLisp Математические функции
- •Логические функции Автолиспа.
- •Работа со списками
- •Использование функции get для ввода данных.
- •Работа с геометрическими описаниями объектов
- •Условное ветвление программ
- •Организация циклов
- •Вызов команд Автокада из программы на языке AutoLisp
- •Управление отображением
- •Вывод данных в командную строку
- •Файловый ввод - вывод
- •Доступ к примитивам и средствам Автокада
- •Insert (block)
- •Vertex (pline)
Доступ к примитивам и средствам Автокада
ФУНКЦИЯ |
Стр. |
(entlast) возвращает «имя» последнего объявленного примитива |
25 |
(entget ) возвращает «имя» указанного примитива |
25 |
(entsel строка-подсказка) выбирается примитив |
27 |
(entdel) позволяет удалять из ГБД примитив |
27 |
(entnext имя_примитива) при вызове без параметра имя_примитива, возвращает имя первого не удаленного примитива в ГБД. |
27 |
(assoc элемент_списка сложный_список) извлекает из сложного_списка элемент списка по ключу элемент_ списка. |
28 |
(subst новый элемент старый элемент список) возвращает копию исходного списка с заменой всех найденных подсписков, идентичных старому элементу, на новый элемент. |
28 |
(entmod список) функция обновляет информацию в ГБД. |
28 |
(entupd список) обновляет изображение “подпримитива” в ГБД и на экране. |
30 |
(handent метка) возвращает имя примитива, который указывается строковым параметром метка. |
30 |
ПРИЛОЖЕНИЕ В
ПРИМЕР №1
Составить программу определения площади кругового сектора.
На рис.1 он выделен штриховкой.
Рис.1
(defun r()
;;Выбрать дугу и получить переменную ent с ее характеристиками
;; в формате DXF
(setq ent (entget (car (entsel"Entget ARC\n"))))
;;Получить значение радиуса по коду DXF 40
(setq rad (cdr (assoc 40 ent)))
;;Получить значение начального угла по коду DXF 50
(setq start_angl (cdr (assoc 50 ent)))
;;Получить значение конечного угла по коду DXF 51
(setq end_angl (cdr (assoc 51 ent)))
;;Определить значение центрального угла выбранной дуги
(setq angl (- end_angl start_angl))
;;Определить площадь сектора
(setq area_sec (* 0.5 rad rad angl))
;;Определить площадь равнобедренного треугольника
;;по двум сторонам и углу между ними
(setq area_3 (* 0.5 rad rad (sin angl)))
;;Определяем площадь сектора
(setq area_all (- area_sec area_3))
)
ПРИЛОЖЕНИЕ С DXF коды примитивов чертежа
Во второй колонке таблицы (..)отмечено, является ли этот подсписок точечной парой..
Коды общие для всех примитивов
Код DXF |
(..) |
Функциональное назначение подсписка |
-1 |
Да |
Имя примитива. Изменяется при загрузке Чертежа. |
0 |
Да |
Тип примитива |
1 |
Да |
Первичное текстовое значение примитива |
2 |
Да |
Имя атрибута или блока |
5 |
Да |
Метка примитива, выраженная в виде атрибута или блока |
6 |
Да |
Тип линии |
7 |
Да |
Имя гарнитуры шрифта |
8 |
Да |
Имя слоя |
62 |
Да |
Номер цвета |
ARC
Код DXF |
(..) |
Функциональное назначение подсписка |
0 |
Да |
ARC (Дуга) |
10 |
Нет |
Центральная точка |
40 |
Да |
Радиус |
50 |
Да |
Начальный угол |
51 |
Да |
Конечный угол |
CIRCLE
Код DXF |
(..) |
Функциональное назначение подсписка |
0 |
Да |
CIRCLE (Круг) |
10 |
Нет |
Центр |
40 |
Да |
Радиус |
POLYLINE
Код DXF |
(..) |
Функциональное назначение подсписка |
0 |
Да |
POLYLINE (Полилиния) |
10 |
Нет |
Начальная точка |
40 |
Да |
Начальная ширина |
41 |
Да |
Конечная ширина |
66 |
Да |
Атрибуты (например, вертексы) |
70 |
Да |
Флаги полилидии: |
|
|
1 – Полилиния замкнута отрезком, |
|
|
2 – Полилиния замкнута кривой |
LINE
Код DXF |
(..) |
Функциональное назначение подсписка |
0 |
Да |
LINE (Отрезок) |
10 |
Нет |
Начальная точка |
11 |
Нет |
Конечная точка |
ATTDEF
Код DXF |
(..) |
Функциональное назначение подсписка |
0 |
Да |
ATTDEF (Определений атрибута блока) |
1 |
Да |
Значение по умолчанию |
2 |
Да |
Имя атрибута |
3 |
Да |
Запрос |
7 |
Да |
Стиль текста |
10 |
Нет |
Начальная точка текста |
11 |
Нет |
Точка выравнивания текста (если выравнен) |
40 |
Да |
Высота текста |
41 |
Да |
Коэффициент растяжения текста |
50 |
Да |
Угол поворота |
51 |
Да |
Угол наклона текста |
70 |
Да |
Флаги атрибута текста: |
|
|
1 – Invisible (Скрытый), |
|
|
2 – Constant (Постоянный), |
|
|
3 – Verify (Контролируемый) |
71 |
Да |
Флаги генерации текста: |
|
|
1 – Mirror on (Зеркальный), |
|
|
4 – Upside-down (Перевернутый) |
72 |
Да |
Код выравнивания текста: |
|
|
0 - Left (Левое), |
|
|
1 – Centered (Центр), |
|
|
2 - Right (Правое), |
|
|
3 – Aligned (Выравненное ). |
|
|
4 - "M" Centered (Середина) |
|
|
5 - "F" Fit (Вписанный) |