Функції, визначені користувачем
AutoLISP має природну розширюваність за рахунок визначення нових функцій. Він дозволяє користувачеві визначати власні функції за допомогою функції DEFUN — define function: (DEFUN <ім'я обумовленої функції> (|<формальні аргументи>/ <локальні перемінні>|) <тіло обумовленої функції> ) , де ім'ям функції може бути будь-як символ; формальні аргументи — послідовність символів, розділених пробілами; локальні перемінні — символи, використовувані для позначення інших об'єктів AutoLISP тільки усередині обумовленої функції; тіло функції — одне або кілька виражень. Пам'ять під локальні перемінні виділяється тільки під час обчислення функції.
ВИКОРИСТАННЯ КОМАНД ACAD В ALISP Функція Command. Будь-яка команда графічного редактора ACAD може бути включена в програму ALISP. Це виконується за допомогою функції сommand. Формат: (command_”ім’я команди”_аргументи…) Наприклад: (command “CIRCLE”_”100,100”_”50”) – будується коло з координатами центра 100,100, радіусом 50. Одним із аргументів є слово pause. pause - це аргумент переключення в режим графічного діалога, після читання pause команда чекає аргумента (опцію, точку і т. і.) з клавіатури чи “миші”, як при її виконанні в ACAD. Наприклад: (command “CIRCLE”_”100,100”_pause) – будується коло з координатами центра 100,100, радіус вводиться користувачем. Функція setq. setq – функція присвоєння числа, рядка, списка і т. і. Формат: (setq _змінна1_вираз). Наприклад: (setq А 5.0) тобто А=5, (setq А 10 В 20 С 0.5) значить А=10, В=20, С=0,5. Функція setq спочатку шукає пари і послідовно повертає значення, присвоюючи його з наступного елемента пари в попередній. Функція get. Для введення значень змінних використовують функції типу get. getint - введення цілого числа; getreal - введення дійсного числа (цілого, раціонального, ірраціонального);
getstring - введення рядка тексту; getpoint - введення точки; getangle - введення кута; getdist – введення відстані. Робота функцій аналогічна: після виконання функція створює паузу і чекає введення даних. Формат: (getpoint _”підказка:”) Наприклад: (getpoint ”\nВведіть центр кола:”) (getdist перша точка _”підказка:”) – функція створює паузу і чекає введення відстані. Відстань може бути вказана трьома способами: - як дійсне число, введене з клавіатури; - шляхом вказання двох точок (буде визначена відстань між ними); - шляхом вказання другої точки за присутністю аргумента перша точка. Очевидно, що перший спосіб еквівалентний дії функції getreal, тобто: (getdist ”підказка:”)= (getreal ”підказка:”) Наприклад: (setq A(getreal ”\ nВведіть число: ”))=(setq A(getdist ”\ nВведіть відстань:”)) Програма 3. Побудова кола. (defun KOLO (); ім’я функції setq O1 (getpoint “\nВведіть центр:”) R (getdist O1 “Введіть радіус:”) ); setq (command “CIRCLE” O1 R) ); defun
ПОБУДОВА ПАРАМЕТРИЗОВАНИХ ЗОБРАЖЕНЬ Функції quote, polar, angle, distance, inters, list. Функція quote повертає вираз не обчислюючи його. Дозволяє задати точку, наприклад: (quote(100 100)) – точка з координатами 100, 100. В тексті програми символ quote як правило заміняють еквівалентним позначенням: ‘. Наприклад: (quote A) те ж саме що і ‘A. Способи завдання геометричної точки в програмі. Точка може бути задана п’ятьма способами: 1. через вже відому функцію getpoint. 2. завдання координат точки у вигляді списка з двох (двохвимірна точка) або трьох (трьохвимірна точка) елементів за допомогою функції quote. Приклад: ‘ (100 100) – 2-х вимірна точка ‘ (100 100 100) - 3-х вимірна точка. 3. завдання точки через іншу точку, кут і відстань за допомогою функції polar: (polar_ точка_кут_відстань) Наприклад: (setq P2 (polar P1 (/ PI 4) l)) 4. визначення точки перетином двох відрізків за допомогою функції inters: (inters_ точка1_точка2_точка3_точка4_ознака)
а) – точка на перетині прямих, б) – точка на перетині продовжень прямих.
Якщо “ознака” дорівнює NIL, то точка, визначена перетином буде на продовженнях відрізків (рис. б). Якщо “ознака” має будь-яке значення, відмінне від NIL, або якщо “ознака” взагалі відсутня, то шукається точка тільки всередині відрізків (рис. а). Якщо вона відсутня, то функція inters повертає NIL. 5. визначення точки за допомогою функції list. Функція формує список з читанням координат точок за допомогою функції car – (координата х) та функції cadr – (координата у). Наприклад: (setq P3 (list (car P1) (cadr P2))), - точка Р3 має координату х таку ж як точка Р1, а координату у таку ж як точка Р2.
Функція angle повертає дійсне число, яке дорівнює куту в радіанах, який утворюється прямою, що проходить через точки Р1 і Р2 та віссю х: (setq alfa (angle P1 P2))
Функція distance повертає дійсне число, яке дорівнює відстані між точкою Р1 та точкою Р2: (setq L12 (distance P1 P2))
Читайте также: Аудиторська палата України: функції, задачі. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|