bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [236]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ИТиУвТС » Другое

ИТиУвТС (з.), ОСАП, Контрольная работа, вар.20, 2016
Подробности о скачивании 28.08.2017, 12:55
Задание :

Отрисовка массивов примитивов. Пользователь должен иметь возможность задавать точку вставки примитива с помощью ввода координат в диалоговом окне или с помощью мыши, а также выбирать цвет примитива с помощью стандартного меню AutoCAD. Размеры примитивов определяются в дополнительном диалоговом окне.

Диалоговое окно:

zad23:dialog { label=" Построение круговых массивов";
: boxed_row { label = " Элемент массива ";
: image_button { color = 248; height = 4; width =10; fixed_height = true ;fixed_width = true;
key = "bt1";}
: image_button { color = 248; height = 4; width =10; fixed_height = true ;fixed_width = true;
key = "bt2";}
: image_button { color = 248; height = 4; width =10; fixed_height = true ;fixed_width = true;
key = "bt3";}
}
:boxed_row { label = " Параметры массива";
:boxed_column { label = " Центр:";
: edit_box { label = "Х"; key ="centx"; edit_width = 6; value= "10";}
: edit_box { label = "Y"; key ="centy"; edit_width = 6; value="10";}
: button { label = "мышь"; key = "ykaz";}
}
:boxed_column {label = "Размеры";
: edit_box { label=" Радиус оп. окр. "; key= "rad";edit_width= 3; value="10";}

:boxed_column {label = "Центр элемента";
: edit_box { label = "Х"; key ="x"; edit_width = 6; value= "10";}
: edit_box { label = "Y"; key ="y"; edit_width = 6; value="10";}
: button { label = "мышь"; key = "ykaz1";}
}}}
:boxed_row { label = " Другие параметры";
: edit_box { label="Кол-во эл-тов"; key= "kol";edit_width= 3; value="5";}
: button { label=" Цвет"; key = "col";}
: image {key="okno"; height=1; width=3.7; fixed_width=true;color = 5;}
}
ok_cancel;
}


Листинг программы:

(defun okno() ; прорисовка окна возле кнопки "цвет"
(progn
(start_image "okno")
(fill_image 1 1 20 20 cv)
(end_image)

)
)

(defun alarm (); Сообщение об ошибки
(if (= nomer 0 )
(progn
(alert "Не выбран центральный элемент массиыва")
(done_dialog 2)
)))

(defun prov () ; запоминание всех параметров
(setq r (atoi (get_tile "rad")) px (atof (get_tile "x"))
py (atof (get_tile "y")) centrx (atof (get_tile "centx"))
centry (atof (get_tile "centy")) n (atoi (get_tile "kol")))
)

(defun ris () ; рисование фигур
(command "_color" cv "")
(setq centr ( list centrx centry))
(if (= nomer 5)
(progn
(command "_circle" centr r "")
(setq point (list centrx (+ centry r)))
))
(if (= nomer 6)
(progn
(command "_polygon" 4 centr "в" r "")
(setq r ( sqrt (/ r 2)))
(setq point (list centrx (+ centry r)))
))
(if (= novmer 7)
(progn
(command "_polygon" 3 centr "в" r "")
(setq point (list centrx (+ centry r))))
)
(setq pt (list px py))
(command "массивкруг" point "" pt "о" n "" "")
)
(defun c:23 (/ pov dcl_id px py n r ygol p _point cv)
(setq dcl_id (load_dialog "zad23.dcl"))

(setq pov 2 px (itoa 10) py (itoa 10) n (itoa 5) r (itoa 10)
centrx (itoa 20) centry (itoa 20) nomer 0 cv 5)
(while (>= pov 2 )
(if (not (new_dialog "zad23" dcl_id))(exit))

(start_image "bt1")
(slide_image 0 0 (dimx_tile "bt1") (dimy_tile "bt1") "circle" )
(end_image)
(start_image "bt2")
(slide_image 3 0 (dimx_tile "bt2") (dimy_tile "bt2") "kvadrat" )
(end_image)
(start_image "bt3")
(slide_image 2 -2 (dimx_tile "bt3") (dimy_tile "bt3") "treygol" )
(end_image)

(set_tile "centx" centrx)
(set_tile "centy" centry)
(set_tile "x" px)
(set_tile "y" py)
(set_tile "kol" n)
(set_tile "rad" r)

(action_tile "x" "( setq px $value )")
(action_tile "y" "( setq py $value )")
(action_tile "centx" "( setq centrx $value )")
(action_tile "centy" "( setq centry $value )")
(action_tile "rad" "( setq r $value )")
(action_tile "kol" "( setq n $value )")

(action_tile "col" "(setq cv (acad_colordlg 9 nil)) (okno)")
(action_tile "ykaz" "(done_dialog 3)")
(action_tile "ykaz1" "(done_dialog 4)")
(action_tile "bt1" "(setq nomer 5) ")
(action_tile "bt2" "(setq nomer 6) ")
(action_tile "bt3" "(setq nomer 7) ")

(action_tile "accept" "(alarm) (prov) (done_dialog 1) ")
(action_tile "cancel" "(done_dialog 0)")

(setq pov (start_dialog))
(if (= pov 3)
(progn
(setq _point1 (getpoint "Задайте точку вставки:"))
(setq centrx (rtos (nth 0 _point1) 2 2) centry (rtos (nth 1 _point1) 2 2))
))
(if (= pov 4)
(progn
(setq _point2 (getpoint "Задайте точку вставки:"))
(setq px (rtos (nth 0 _point2) 2 2) py (rtos (nth 1 _point2) 2 2))
))
)
(unload_dialog dcl_id)

(ris)

)
Категория: Другое | Добавил: barrysimon
Просмотров: 1205 | Загрузок: 14
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]