Построение трехмерной геометрической модели
Заказать уникальную курсовую работу- 34 34 страницы
- 6 + 6 источников
- Добавлена 21.07.2023
- Содержание
- Часть работы
- Список литературы
1. ОБЬЕКТ МОДЕЛИРОВАНИЯ. СТРУКТУРА МОДЕЛИ 7
1.1 Объект моделирования 7
1.2 Структура модели 7
2. ПОВЕРХНОСТНОЕ МОДЕЛИРОВАНИЕ 9
2.1 Описание способа моделирования 9
2.2. Построение модели 10
3. ТВЕРДОТЕЛЬНОЕ МОДЕЛИРОВАНИЕ 12
3.1 Описание способа моделирования 12
3.2 Построения модели 13
4. ПРИМЕНЕНИЕ ЯЗЫКА AUTOLISP 16
4.1 Описание способа моделирования 16
4.2 Программная реализация на языке AutoLISP 17
4.2.1 Описание используемых функций 17
4.2.2 Описание программы 18
4.3 Примеры выполнения программы 19
ВЫВОДЫ 23
ИСТОЧНИКИ 24
ПРИЛОЖЕНИЕ А 25
Техническое задание 25
ПРИЛОЖЕНИЕ Б 28
Текст программы bokal.lsp 28
ПРИЛОЖЕНИЕ В 37
Руководство пользователя 37
ПРИЛОЖЕНИЕ Г 38
Целью работы является построение трёхмерной модели различными средствами моделирования, а именно средствами поверхностного моделирования, средствами твердотельного моделирования и средствами твердотельного моделирования с помощью программы, написанной средствами языка AutoLISP.Требованиякпрограмме:Наличиебазовойточки.Проверказначенийпараметровнадопустимостьи непротиворечивость.Возможностьдобавлятьнаэкраннесколькообъектов.Содержаниепояснительнойзаписки:Разработка поверхностнойитвердотельноймодели объектав средеAutoCAD.Описаниевыбранныхметодовиалгоритмов.ПрограммнаяреализациянаязыкеAutoLISP.ПримервыполненияпрограммыУсловиезадания:Бокал для винаРисунок1 –Объект«Тележкадля мороженного»Объектдолжензадаватьсяследующимипараметрами(неменее10инеменее одного количественного):Диаметр подставкиВысота диска подставкиВысота ножкиНаименьший диаметр ножкиНаибольший внешний диаметр емкостиРасстояние от верхней части бокала до линии наибольшего внешнего диаметраДиаметр верхней части емкостиТолщина стенок емкостиУгол наклона подставкиРадиус сглаживания кромки емкости бокалаДатавыдачизадания:21февраля2023г.Заданиепринялкисполнению:студентгруппыКМД-21бШпилёваА.А.(фио)(подпись)Руководителипроекта:доценткаф.КМДКарабчевскийВ.В.(фио)(подпись)асс. каф.КМДУльяненкоА.Э.(фио)(подпись)ПРИЛОЖЕНИЕБТекстпрограммыbokal.lsp(defun c:bokal()(command "_osnap" "_off") (initget 1)(setqt_base (getpoint "Введите начальную точку (0; 0):"))(initget (+ 1 2 4))(setqdpod (getint "\nВведите диаметр подставки (800):"))(initget (+ 1 2 4))(setqvdpod (getint "\nВведите высоту диска подставки (100):"))(while (> vdpoddpod)(setqvdpod (getint (strcat "Неверное значение! Высота диска подставки должна быть меньше диаметра подствавки "(dpod)"):"))))(initget (+ 1 2 4))(setqdiz_m_noj_em (getint "\nВведите диаметр изгиба перехода ножки в емкость (300):"))(initget (+ 1 2 4))(setqvnoj (getint "\nВведите высоту ножки (500):"))(initget (+ 1 2 4))(setqndnoj (getint "\nВведите наименьший диаметр ножки (200):"))(while (> ndnoj diz_m_noj_em)(setqndnoj (getint (strcat "Неверное значение! Наименьший диаметр ножки должна быть меньше диаметра изгиба перехода ножки в емкость "(diz_m_noj_em)"):"))))(initget (+ 1 2 4))(setqvem (getint "\nВведите высоту емкости (600):"))(initget (+ 1 2 4))(setqvdem1_3 (getint "\nВведите внешний диаметр емкости на 1/3 ее размера (800):"))(initget (+ 1 2 4))(setqvdem2_3 (getint "\nВведите внешний диаметр емкости на 2/3 ее размера (1000):"))(initget (+ 1 2 4))(setqdvnupem (getint "\nВведите диаметр верхней части емкости (900):"))(initget (+ 1 2 4))(setqtsem (getint "\nВведите толщина стенок емкости (50):"))(initget (+ 1 2 4))(setqglem (getint "\nВведите глубину емкости (550):"))(while (< vem glem)(setq glem (getint (strcat "Неверное значение! Глубина емкости должна быть меньше высоты емкости "(vem)"):"))));;;(setq dpod 800);;;(setq vdpod 100);;;(setq diz_m_noj_em 300);;;(setq vnoj 500);;;(setq ndnoj 200);;;(setq vem 600);;;(setq vdem1_3 800);;;(setq vdem2_3 1000);;;(setq dvnupem 900);;;(setq tsem 50);;;(setq glem 550)(setq dpod (/ dpod 100.0))(setq vdpod (/ vdpod 100.0))(setq diz_m_noj_em (/ diz_m_noj_em 100.0))(setq vnoj (/ vnoj 100.0))(setq ndnoj (/ ndnoj 100.0))(setq vem (/ vem 100.0))(setq vdem1_3 (/ vdem1_3 100.0))(setq vdem2_3 (/ vdem2_3 100.0))(setq dvnupem (/ dvnupem 100.0))(setq tsem (/ tsem 100.0))(setq glem (/ glem 100.0))(command "_-view" "_swiso");(setq bp (getpoint "\nSet base point : "));(setq osm (getvar "osmode"))(setq osm3 (getvar "3dosmode"))(setvar "osmode" 0)(setvar "3dosmode" 0);(setq PT (list (/ dpod 2) 0 0))(setq PT_LIST (list PT))(setq PT (list (/ dpod 2) (* vdpod 0.8) 0))(setq PT_LIST (append (list PT) PT_LIST)) (setq PT (list (* 0.75 (/ dpod 2)) vdpod 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ ndnoj 2) (+ vdpod (* vnoj 0.6)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ diz_m_noj_em 2) (+ vdpod vnoj) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ vdem1_3 2) (+ (+ vdpod vnoj) (/ vem 3)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ vdem2_3 2) (+ (+ vdpod vnoj) (* vem 0.6666666666666667)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ dvnupem 2) (+ (+ vdpod vnoj) vem) 0))(setq PT_LIST (append (list PT) PT_LIST))(command "_.spline")(foreach draw PT_LIST (vl-cmdf draw)) (command "" "" "") (setq bokal1 (entlast))(setq PT (list (/ dpod 2) 0 0))(setq PT_LIST (list PT))(setq PT (list 0.0 0.0 0.0))(setq PT_LIST (append (list PT) PT_LIST)) (setq PT (list 0.0 (- (+ (+ vdpod vnoj) vem) glem) 0))(setq PT_LIST (append (list PT) PT_LIST))(command "_.pline" (foreach pt PT_LIST (command "_non" pt)) ; draw each point from the list) ; draw the polyline(setq bokal2 (entlast))(setq PT (list 0.0 (- (+ (+ vdpod vnoj) vem) glem) 0))(setq PT_LIST (list PT));(setq PT (list (- (/ diz_m_noj_em 2) tsem) (+ vdpod vnoj) 0));(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (- (/ vdem1_3 2) tsem) (+ (+ vdpod vnoj) (/ vem 3)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (- (/ vdem2_3 2) tsem) (+ (+ vdpod vnoj) (* vem 0.6666666666666667)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (- (/ dvnupem 2) tsem) (+ (+ vdpod vnoj) vem) 0))(setq PT_LIST (append (list PT) PT_LIST)) (command "_.spline") (foreach draw PT_LIST (vl-cmdf draw)) (command "" "" "") (setq bokal3 (entlast))(setq PT (list (- (/ dvnupem 2) tsem) (+ (+ vdpod vnoj) vem) 0))(setq PT_LIST (list PT))(setq PT (list (- (/ dvnupem 2) (/ tsem 2)) (+ (* tsem 0.2) (+ (+ vdpod vnoj) vem)) 0))(setq PT_LIST (append (list PT) PT_LIST))(setq PT (list (/ dvnupem 2) (+ (+ vdpod vnoj) vem) 0))(setq PT_LIST (append (list PT) PT_LIST)) (command "_.spline") (foreach draw PT_LIST (vl-cmdf draw)) (command "" "" "") (setq bokal4 (entlast)) (if (setq SS (ssget "X" (list (cons 0 "SPLINE")))) (progn (setq KK 0) (while (< KK (sslength SS)) (command "SPLINEDIT" (ssname SS KK) "P" "") (setq KK (1+ KK)) ) ) )(setq ssj (ssget "X")) (command "pedit" "m" ssj "" "j" "0.01" "c" "")(command "" "" "")(setq bokal (entlast));; Define the rotation axis with two points(command "_revolve" bokal "" '(0 0 0) '(0 1 0) 360)(setvar "osmode" osm)(setvar "3dosmode" osm3)(command "hide"))ПРИЛОЖЕНИЕВРуководствопользователяПрограмма bokal.lsp представляет собой Lisp-скрипт, который может быть использован в программе AutoCAD для создания моделей бокалов.ПошаговоеруководствопоиспользованиюэтойпрограммывAutoCAD:Сохранитефайлbokal.lspОткройтефайлAutoCADиоткройтечертеж,вкоторыйвыхотитедобавить модель.Перейдите во вкладку «Управление», далее выберите «Редактор Visual Lisp»В открывшемся окне выберете «файл», затем «Открыть файл», найдите сохранный файл bokal.lsp, нажмите «открыть»ВокнеVisualLispнажмитезагрузитьактивноеокноредактораОткройтечертеж,вкоторомвыхотитесоздатьтележку.. В командной строке AutoCAD введите " bokal" и нажмите Enter. Это вызовет функцию "bokal".Последовательновведитезначениядляразличныхпараметров бокала, которые будут запрашиваться по очереди:Послевводавсехзначенийбокал для винабудет автоматически создан в вашем чертеже.Сохранитечертежпослесозданиямодели.ПРИЛОЖЕНИЕГЗаведующему кафедройкомпьютерногомоделированияи дизайнаГОУВПО«Донецкийнациональный технический университет» Карабчевскому В.В.ПОДТВЕРЖДЕНИЕОРИГИНАЛЬНОСТИРАБОТЫСообщаем Вам, что курсовой проект по дисциплине «Компьютерная геометрияигеометрическоемоделирование»студентки2курсагруппыКМД- 21б, Шпилёва Анна Александровна, на тему: «Разработка программы для моделирования параметризованного трёхмерного объекта в среде AutoCAD» по направлению подготовки 02.03.01 «Математика и компьютерные науки», имеет97,23% оригинальности по данным проверки сайта https://www.antiplagiat.ru.СтудентА.А. Шпилёва(подпись)РуководительВ.В.Карабчевский(подпись)
2. Форум AutoCAD на русском языке с разделом по AutoLISP: https://forum.autocadprof.ru/forumdisplay.php?f=82
3. AutoLISP Wiki - свободная энциклопедия по AutoLISP: https://autolisp.fandom.com/ru/wiki/AutoLISP_Wiki
4. Справочник AutoLisp функций
https://acad-prog.ru/spravochnik-autolisp-funktsij-po-naznacheniyu/
5. Справочник по стандартным функциям AUTOLISP https://lispbox.wordpress.com/2014/12/18/справочник-по-стандартным- функциям-autolisp/
6. CAD.ru - сайт о проектировании с разделами о моделировании: https://www.cad.ru/articles/surface/