Создание параметрического изображения объекта.


1.Постановка задачи.
1)Разработать алгоритм параметрического изображения плана офиса размещением мебели и создать соответствующую функцию для построения.
(OFFICE X Y LDD LD)
X, Y – базовые точки вставки.
LDD – список данных для изображения двери офиса.
Напр-р: (N D2 HD)
N – номер угла офиса
D2 – растояние от угла офиса до двери
HD – ширина двери
LD – список элементов офиса с размерами
((X1 Y1 D1 H1 “имя” U(1)(X2 Y1 D2 H2 “имя” U2) …)
X1, Y1 – базовые координаты офиса или мебели
D1, H1 – длина и ширина офиса или мебели
“имя”, U1 – название мебели и величина угла вставки ее.
На плане должны быть представленны упрощенные изображения мебели и её расположение, название с размерами.
Порядок разработки программы:
1.Сделать эскиз.
2.Определить процесс создания прямоугольника (определяющего точку, угол и надпись к нему).
1)определить точку прямоугольника относительно базовой точки с заданным углом наклона прямоугольника и заданными размерами.
2)сформировать изображение прямоугольника по 4 точкам.
3)определить точку начала вывода текста.
4)сформировать текст в прямоугольники.
5)обозначим построение прямоугольника как функцию
(BOX X Y D H “???” UG)
6)последовательность действий для построения прямоугольника.
Для построения точек используем функцию:
(POLAR <T1> <UG> <R>).
Для ввода текста необходимо определить координаты точки ввода текста и сам текст.
Устанавливаем счётчик j>2 (определяем количество единиц мебели).
7)определение точек вставки текста и сам текст
(SETQ BTT (POLAR BT (TUR (/PI 2.7)) (/H 2)) (1)
;BTT присвоить коордтнаты точки относительно точки вставки BT под углом UR+PI/2.7 на расстояние H/2.
BTX (POLAR BT (+UR (/PI 3.7)) (/H 1.7))
;BTX – переменная определяющая текст размеры которого также задаются.
H1 (ITOA H)
D1 (ITOA D)
;H1 – перводит горизонтальный размер в текст.
;D1 – переменная которая переводит текст длину прямоугольника.

TTT (IF j>2 (STRCAT D1 “x” H1))
J(+j1)
;ввод текстовой информации в приемник:
(CJVVAND TEXT “C” BTT (/D 5) (+90 UG) TXT “TEXT” “C” BTX “ ” “ ” TTT) (2)
для изображения координат двери необходимо указать координаты углов офиса.
(IF (=j1) TT1 BT
TT2 T1
TT3 T2
TT4 T3)
Для построения плана офиса определяют функцию BOX
(DEFUN BOX (X Y D H TXT UG))
X, Y — координаты точки вставки
D, N – длина и ширина офиса
TXT – переменная, определяющая описание офиса
UG – угол поворота
;определение координат вершин.

(SETQ BT (LIST X Y )
UR (PI (/UC 110.0))
; UR – преобразовывает углы из градусов в радианы.
T1 (POLAR BT (/PT2)H)
T2 (POLAR T1 UR D)
T3 (POLAR BT UR D)
; создание изображения прямоугольника.
(COMMAND “LINE” BT T1 T2 T3 “ ”)
;определение координат углов офиса:
IF (=j1)
TT1 BT
TT2 T1
TT3 T2
TT4 T3.
;определение координат точек ввода текста (1)
;ввод текстовой информации в прямоугольник (2)

;Использую функцию BOX, разработаим функцию OFFICE для создания изображения плана офмса с мебелью. Обрисовку плана офиса будем проводить в цикле. Введем несколько параметров для обрисовки двери N – номер угла офиса, вблизи которого распологается дверь. Нумерация углов начнем с нижнего левого.
D2 – параметр, определяющий расстояние от угла офиса до двери.
HD – ширина двери.
Программа для создания офиса может иметь вид:
(DEFUN OFFICE (X Y LDD LD)
(SETVAR “CMDECHO” 0 ) ;отключение эха
(SETVAR “BLIPMODE” 0) ; отключение изображения маркера
(COMMAND “LIMITS” “0,0” “192,165” “200M” ;задание границ и увеличение поля в размер экрана.

(SETQ N (NTH 0 LDD)
;присвоить N первый элемент из списка LDD
D2 (NTH 1 LDD)
;N – номер отсчета угла двери
D2 – второй элемент из списка LDD – расстояние от двери до угла.
HD – ширина двери
HD (NTH 2 LDD))
(SETQ j 1) ;устанавливает j=1
;цикл создания изображения плана офиса
(FOREACH EL LD
(SETQ X (NTH 0 EL)
Y (NTH 1 EL)
D (NTH 2 EL)
H (NTH 3 EL)
TXT (NTH 4 EL)
U (NTH 5 EL)
)
(IF (EQ j 1) (SETQ X1 X)
(IF (EQ j 2)(SETQ H0 (-X X1); тому стенки офиса
(BOX X Y DH TEXT U ); построение прямоугольника
); end fireach

Загрузка...