§5. Параметрические функции гбд
Ниже приведен текст функции trap, выполняющей вычер-чивание трапеции по параметрам, указанным пользо-вателем. Стандартные наборы параметров вводятся по номеру типоразмера автоматически из пакетного файла trap.dat, нестандартные – непосредственно по запросам с клавиатуры. Параметры привязки вводятся пользователем в диалоговом режиме. Данная функция использует вспомо-гательную функцию mas , которая по заданному номеру типоразмера считывает из списка набор геометрических параметров объекта.
(defun c:trap()
(setq a nil b nil h nil)
; Запрос о типе вводимых параметров
(setq v (getint "Введите тип параметров(0-
стандартные, иначе – нестандартные):"))
; Ввод нестандартных параметров c клавиатуры
(if (/= v 0)
(setq a (getreal "Введите a:")
b (getreal "Введите b:") h (getreal "Введите h:"))
)
; Ввод стандартных параметров из файла trap.dat
(if (= v 0) (prong
; 1. Переписывание файла trap.dat в список sp
(setq fl (open "c:\\ACAD\\mas\\trap.dat" "r") sp nil dl nil)
(while (setq dl (read-line fl))
(setq sp (cons (read dl) sp)) ) (close fl)
(setq sp (reverse sp) fl nil)
; 2. Поиск в списке sp строки параметров по
161
; заданному типоразмеру и запись их в список mas1
(mas "Введите типоразмер трапеции" 0 sp)
; 3.Присваивание переменным а,b,h значений из mas1
(setq a (nth 1 mas1) b (nth 2 mas1) h (nth 3 mas1))
) )
; Ввод параметров вставки с клавиатуры (экрана)
(setq pp (getpoint "Введите точку вставки"))
(setq u (getreal "Введите угол вставки"))
; Перевод значения угла вставки в радианы
(setq u (* u (/ pi 180)) d (* 0.5 (- b a)) fi (atan (/ h d)) )
(setq
ps (polar pp (+ u (* 1.5 pi)) (* 0.5 h))
; Расчёт координат вершин (р1,р2,р3,р4)
p1 (polar ps (+ u pi) (* 0.5 b))
p2 (polar p1 (+ u fi) (/ h (sin fi)))
p3 (polar p2 u a)
p4 (polar p3 (+ u (- (* 2 pi) fi)) (/ h (sin fi)))
; Расчёт точек для осей (ра1,ра2,рb1,рb2)
pa1 (polar pp (+ u pi) (* 0.6 (+ a b)))
pa2 (polar pp u (* 0.6 (+ a b)))
pb1 (polar pp (+ u (* 1.5 pi)) (* 0.8 h))
pb2 (polar pp (+ u (* 0.5 pi)) (* 0.8 h))
)
; Запоминание текущего слоя
(setq currsl (getvar "clayer"))
; Открытие нового слоя для изображения трапеции
(command "layer" "m" "trp" "c" "white" "" "l" "continuous" "" "s" "trp" ""
; Вычерчивание трапеции
"line" p1 p2 p3 p4 "c"
; Открытие нового слоя для изображения осей трапеции
"layer" "m" "osi" "c" "magenta" "" "l" "center" "" "s" "osi" ""
; Вычерчивание осей
"line" pa1 pa2 ""
162
"line" pb1 pb2 ""
; Возврат в исходный слой, перерисовка экрана
"layer" "s" currsl "" "redraw"
)
)
; Вспомогательная функция для поиска параметров в
; списке х по запрашиваемому типоразмеру
(defun mas (text a x)
(setq c 0 mas1 nil)
(while (= mas1 nil)
; Выдача запроса о типоразмере в командную строку
(princ "\n") (princ text)(princ "<") (princ a) (princ ">:")
(setq param (getint))
; Присваивание типоразмера по умолчанию
(if (= param nil) (setq param a))
; Поиск в х строки, у которой позиция с содержит
; значение param и запись её в mas1
(foreach n x (if (= (nth c n) param) (setq mas1 n)))
; Проверка найденных параметров
(if (= mas1 nil) (princ "Неверное значение"))
) )
Очевидно, универсальная функция mas может быть использована не только с рассмотренной выше функцией trap, но и с другими аналогичными параметрическими функциями.
Параметрическая функция orth для вычерчивания прямоугольников может быть создана аналогично. Текст её приведен в Приложении.
- Глава 1. Основные виды геометрических объектов
- §1. Основные аналитические способы задания кривых
- §2. Виды кривых
- §3. Основные способы задания прямых
- §4. Способы задания окружностей и их дуг
- §6. Виды поверхностей
- Пример 2.Уравнение конуса второй степени
- §7. Основные способы задания плоскостей
- §8. Аналитические способы задания пространственных тел
- Глава 2. Интерполяция кривых и поверхностей алгебраическими полиномами
- §1. Основные способы моделирования кривых. Интерполяция и аппроксимация
- §2. Интерполирование кривых с помощью алгебраических полиномов канонического вида
- §3. Интерполирование по однократным узлам. Интерполяционные многочлены Лагранжа и Ньютона
- §4. Интерполирование по двукратным узлам. Интерполяционные многочлены Эрмита
- §5. Интерполирование поверхностей
- 5.1. Интерполирование по однократным узлам. Билинейные поверхности
- 5.2. Интерполирование по двукратным узлам
- Глава 3. Моделирование кривых и поверхностей при помощи сплайнов
- I. Построение локальных сплайнов.
- II. Построение интерполяционных сплайнов.
- §1. Интерполирование кривых и поверхностей с помощью локальных сплайнов
- 1.1 Построение сплайнов по однократным узлам
- 1.2 Интерполирование по двукратным узлам
- §2. Построение интерполяционных сплайнов.
- 2.2. Кубические интерполяционные сплайны
- §3. Интерполяция с помощью в-сплайнов
- Глава 4. Интерполирование поверхностей по линиям
- §1.Интерполирование по кривым (линейчатые или плазовые поверхности)
- §2. Линейные поверхности Кунса
- §3. Обобщенные поверхности Кунса
- Глава 5. Аппроксимация алгебраическими полиномами
- §1. Аппроксимация по методу наименьших квадратов
- §2. Аппроксимация алгебраическими многочленами по критерию наилучшего равномерного приближения
- § 3. Аппроксимация при помощи кривых и поверхностей Безье
- Глава 6. Модели объектов. Плоские и пространственные линейные преобразования
- §1. Модели (структуры данных) графических объектов
- §2. Задание плоских и пространственных линейных преобразований при помощи уравнений связи
- § 3. Однородные координаты. Матричные представления линейных преобразований
- Задачи. Записать прямые и обратные матрицы элемен-тарных преобразований, при помощи которых можно осу-ществить следующие действия:
- § 4. Составные линейные преобразования
- § 5. Линейные преобразования каркасных моделей
- Глава 7.Проективные изображения трехмерных объектов
- §1. Аксонометрические проекции
- 1.1.Ортогональные проекции
- 1.2 Диметрические проекции
- Куб Диметрическая проекция
- 1. 3. Изометрическая проекция
- §2. Перспективные проекции
- §3. Построение проективных векторных изображений трёхмерных объектов
- Глава 8. Графические базы данных (гбд)
- §1. Структура и схема функционирования типовых гбд
- §2. Постановка задачи проектирования гбд в графической системе AutoCad
- Точки привязки
- §3. Разработка структуры гбд
- §4. Пакетные файлы гбд
- §5. Параметрические функции гбд
- §6. Создание библиотек слайдов гбд
- §7. Модификация основного меню AutoCad 2000
- 7.1. Файл меню. Его разделы. Управляющие символы
- 7.2. Модификация всплывающего и падающего меню AutoCad2000
- 7.3. Модификация экранного меню AutoCad2000
- 7.4. Модификация графического меню AutoCad2000
- §8. Использование разработанной базы данных
- Глава 9. Создание реалистических изображений
- § 1. Пространственные модели
- §2. Геометрическое моделирование объектов сложной формы
- § 3. Текстуры
- § 4. Основные операции при построении реалистических изображений
- § 5. Моделирование источников освещения и расчёт освещённости малых участков поверхности объектов
- § 6. Моделирование отражающих свойств поверхностей
- § 7. Моделирование отражения от поверхности (затенение)
- § 8. Удаление невидимых граней. Расчёт теней
- §9. Создание стереоскопического эффекта
- §10. Анимация
- Порядок выполнения и примерные темы курсовых работ
- Литература