МД (1194692), страница 17

Файл №1194692 МД (Методология создания твердотельных моделей с использованием технологий аддитивного производства) 17 страницаМД (1194692) страница 172020-10-01СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 17)

Данная платформа является простой в использовании, подключает все необходимые длякомпиляции проекта библиотеки, перечисленные ранее, и работает, в том числе, на маломощных компьютерах.Данная среда разработки использована для создания оконного приложения сконсольным интерфейсом для реализации адаптивного подхода к динамическизадаваемой толщине слоя при подготовке моделей к трехмерной печати.1104 РЕАЛИЗАЦИЯ ПРОГРАММЫ-СЛАЙСЕРАВ области прототипирования с использованием технологий трехмерной печати на данный момент существует задача подготовки трехмерной модели кпечати. Эта задача представляет собой задачу генерации так называемого gкода по файлу в stl формате, который описывает геометрические параметры печатаемой модели, в том числе параметры заполнения.В основе параметров g-кода для вывода на печать стоит условие разделениямодели на слои.

В процессе разделения, в каждом слое могут присутствоватьобласти различных топологических частей модели: внешний контур, внутренний контур, заливка и т.д. Для каждого из этих объектов используется соответствующая подпрограмма, позволяющая сгенерировать соответствующий g-код.В стандартной реализации существующих на рынке аддитивных технологийпрограмм для генерации gcode, заполнение полостей внутри модели реализуется с помощью создания повторяющихся контуров по определенной повторяющейся геометрической форме. Так, в различных программах встречается способы заливки внутреннего пространства подготовленных к аддитивному производству моделей решеткой под 45градусов, в виде гексагона, полной заливкойи другими способами.В ходе проведения практических экспериментов с трехмерной печатью потехнологии FDM установлено, что возникают случаи, когда множество слоевимеют одинаковое сечение. В таком случае, возможно увеличение расстояниямежду слоями и, соответственно, уменьшение количества затрачиваемого пластика, тем самым уменьшая и общее время печати.

Для этого требуется производить анализ трехмерной модели перед процессом «слайсинга» для определения абсолютно вертикальных мест в модели, чтобы программно уменьшить количество слоев на этом месте.В ходе исследования написана программа, которая уникально обрабатываетсложные элементы stl файла, подготовленного для печати и перевода в g-код, и111позволяет по 3D-модели менять толщину слоя при заполнении и для контурапечати.Реализация данного программного комплекса и его дальнейшая проработкав настоящий момент имеет высокую актуальность, в связи с ростом рынка аддитивного производства, так как в данный момент имеющиеся на рынке ПОпрограммы-слайсеры не могут изменять толщину слоя при сложной топологииконструктивного элемента модели, например, выполнять укрепление стеноктонкостенных объектов [37].Реализация данного программного приложения на концептуальном и программном уровне приведена ниже.4.1 Концептуальное описание работы приложенияДля написания программного использован язык программирования С++, вкачестве платформы программирования применен ПО Code::Blocks.Принципы работы приложения строятся на основе модульности, для обеспечения возможности в дальнейшем добавлять дополнительный функционал.Чтобы не перегружать пользователя приложения функционалом, для экономии системных ресурсов и для минимизации программных вычислений, интерфейс работы с программой реализован через консольное меню, основные функции привязаны к управляющим клавишам и соответствуют требованиям к программе, предъявленным в главе 3.Работа приложения обусловлена лаконичностью функционала.

Чтобы неперегружать пользователя лишними действиями ему предоставляется необходимый минимум операций для выполнения.Минимизация функционала отражает предполагаемое поведение системы –основной задачей приложения выступает послойное деление модели на слои(статическое или динамическое, с учетом геометрии модели) с дальнейшим сохранением в файл в формате g-кода для дальнейшей трехмерной печати, но выполнение этой задачи подразумевает выбор входных данных в виде трехмерной112модели в формате *.stl, определение типа слайсинга, возможность созданиявнутренней сетки заполнения и просмотра прохождения экструдера на каждомслое [38].Описание работы приложения на концептуальном уровне с помощью отражения взаимодействия пользователя и выполняемых системой действий поконкретному сценарию представлено на рисунке 45.Приложение-слайсер для реализацииадаптивного подхода к динамическизадаваемой толщине слояЗагрузка моделиВыбор типа деленияПросмотр сетки заполненияПослойное деление модели (слайсинг)Выбор толщины слояВывод результата операцииПользователь приложенияСохранение результатов в g-кодРабота алгоритма деления на n-ом слоеРисунок 45 – Диаграмма вариантов использованияПредставление совместной работы объектов для достижения общей цели,акцентируя внимание на их ролях, представлено на рисунке 46.

Описание динамических аспектов моделирующей системы отражает минимизацию и простоту приложения.113Главная особенность диаграммы кооперации заключается в возможностипредставить структурные отношения между объектами, участвующими во взаимодействии, а также набор взаимодействующих ролей, используемых вместе,чтобы показать функциональность приложения.Пользователь приложенияКонсольныйинтерфейсУправляющиеподпрограммыОбрабатываемыетрехмерныемодели в формате*.stlОбработкаЗагруженноймоделиРисунок 46 – Диаграмма кооперацииОписание алгоритма действий в рамках варианта поведения системы представлено на рисунке 47.Данная диаграмма покажет все возможные состояния, в которых можетнаходиться система, а так же сам процесс смены состояний в результате внешнего влияния.Загрузка приложенияВыбор трехмерной моделиПроверка загрузки моделиВыбор свойств слайсинга(толщина слоя,тип деления - статический/динамический)Выполнение послойного деления,сохранение результатов в файлРисунок 47 – Диаграмма состояний системы114Конкретный сеанс работы программы представлен в виде диаграммы последовательности действий (рисунок 48).При запуске программы происходит запуск консоли и окна вывода, с возможностью дальнейшей обработки модели с помощью управляющих клавиш.Протокол конкретного сеанса работы приложения представлен в диаграммепоследовательности действий.

В данной диаграмме отображается последовательность посылок сообщений.Пользователь приложенияКонсольУправляющая программаТрехмерная модельАлгоритмыОбработка трехмерной моделиСохранение в виде g-кодаЗапуск приложенияВыбранный файл отсутствуетВыбор файлаПроверка наличия файлаВыбранный файл отсутствуетВыбранный файл отсутствуетВыбор и загрузка трехмерной моделиЗапуск приложенияВыбор файлаПроверка наличия файлаВыбранный файл загруженсигнал о завершениисигнал о завершенииВыбор параметров слайсинга и обработка моделиСлайсинг моделиСохранение массива контуровсигнал о завершениисигнал о завершениисигнал о завершенииРисунок 48 – Диаграмма последовательности действийЕсли диаграмма вариантов использования ставят перед разрабатываемойсистемой цель, то диаграмма деятельности показывает последовательность действий, необходимых для ее достижения.

Действия – элементарные шаги, которые не предполагают дальнейшую декомпозицию.Разложение спецификации исполняемого поведения в виде координированного последовательного и параллельного выполнения подчиненных элементовприложения на составные части представлено на рисунке 49.115НачалоЗапуск приложенияПрогрузка файла вформате *stlЗагрузка трехмерной моделиРабота с параметрами модели (поворот, просмотр слоя и т.д)ВыбордругоймоделиВыбор толщины слояВыбор типа послойного деленияВыборстатическогоалгоритмаВыбордругоймоделиВыбординамическогоалгоритмаСтатический алгоритмДинамический алгоритмОтправка запросана выборалгоритмаОбработкатрехмерноймоделиВывод результата послойного деления модели на экранЗапись данных омодели в виде g-кодаСохранение результата в формате g-кодаЗавершениеработыКонецРисунок 49 – Диаграмма деятельностиВ начале сеанса работы приложения загружается трехмерная модель, выбранная пользователем, с загруженной моделью проводятся операции, такие116как поворот модели, просмотр обхода контура на определенном слое и варианты заливки твердого тела модели.Далее следует выполнение основной части программы – выбор и выполнение вписанных в программу алгоритмов для статистического и адаптивного деления модели на слои с отображением результата и последующим его экспортом в формат g-кода с сохранением.

При выполнении действий, программа также выдает информацию о проведенных действиях в консоль.4.2 Реализация программного кодаПрограммный код приложения написан в модульном виде, для возможностидобавление в дальнейшем дополнительного функционала.Код написан с использованием структур, без применения объектноориентированного подхода как такового, что связано с большим объемом вычислительных алгоритмов, реализация которых возможна без использованияООП.Далее приведены наиболее интересные, по мнению автора, моменты реализации кода программы. Полный программный код приложения с пояснениямиприведен в Приложении А.Представленные ниже два фрагмента программы реализуют две функции,необходимые для генерации точек пересечения секущей плоскости с ребрамимодели и тригонометрическая функция для вычисления точки пересечения отрезка и линии:bool Intersect2Line(float ax1, float ay1, float ax2, float ay2,float bx1, float by1, float bx2, float by2){float v1=(bx2-bx1)*(ay1-by1)-(by2-by1)*(ax1-bx1);float v2=(bx2-bx1)*(ay2-by1)-(by2-by1)*(ax2-bx1);float v3=(ax2-ax1)*(by1-ay1)-(ay2-ay1)*(bx1-ax1);float v4=(ax2-ax1)*(by2-ay1)-(ay2-ay1)*(bx2-ax1);return (v1*v2<0) && (v3*v4<0); }117Тригонометрическая функция для вычисления точки пересечения двух отрезков:bool IntersectLine2Otrezok(float lineP1x, float lineP1y, floatlineP2x, float lineP2y, float otrP1x, float otrP1y, float otrP2x,float otrP2y){float a=FindAngleOtrezok(lineP1x, lineP1y, lineP2x,lineP2y)-FindAngleOtrezok(lineP1x, lineP1y, otrP1x, otrP1y);float b=FindAngleOtrezok(lineP1x, lineP1y, lineP2x,lineP2y)-FindAngleOtrezok(lineP1x, lineP1y, otrP2x, otrP2y);float c=FindAngleOtrezok(lineP2x, lineP2y, lineP1x,lineP1y)-FindAngleOtrezok(lineP2x, lineP2y, otrP1x, otrP1y);float d=FindAngleOtrezok(lineP2x, lineP2y, lineP1x,lineP1y)-FindAngleOtrezok(lineP2x, lineP2y, otrP2x, otrP2y);if (((c>0 && d<0)||(c<0 && d>0))||((a>0 && b<0)||(a<0 &&b>0))) {if ((a<0.001&&a>-0.001)||(b<0.001&&b>0.001)||(c<0.001&&c>-0.001)||(d<0.001&&d>-0.001)){return false; }return true; }return false; }Функция, в перспективе создающая полигон сетки Вороного.

Находится всостоянии разработки. Построение полигона основано на вычислении центрамногоугольника. Строится после успешного завершения для каждой модели:void CreatePligoneForPoint(int currentID){MeabyPoint.clear();point2D tmp;for (int i=0;i<InnerPoints.size();i++){for (int j=i+1;j<InnerPoints.size();j++){if (i==currentID || j==currentID) continue;if (!GetCoordsCentrTreugolnika(InnerPoints[currentID], InnerPoints[i], InnerPoints[j], tmp))continue;MeabyPoint.push_back(tmp); } }cout<<"Create "<<MeabyPoint.size()<<" subPoints"<<endl;for (int i=0;i<MeabyPoint.size();i++){for (int j=0;j<InnerPoints.size();j++){if (j==currentID) continue;float p1x=InnerPoints[currentID].X;float p1y=InnerPoints[currentID].Y;float p2x=InnerPoints[j].X;float p2y=InnerPoints[j].Y;float np1x, np1y, np2x, np2y;GetPerpendicular(p1x,p1y,p2x,p2y,np1x,np1y,np2x,np2y);118if (IntersectLine2Otrezok(np1x,np1y,np2x,np2y,p1x,p1y,MeabyPoint[i].x,MeabyPoint[i].y)){MeabyPoint.erase(MeabyPoint.begin()+i,MeabyPoint.begin()+i+1);i=0;j=0;break; }}}cout<<"After clearing "<<MeabyPoint.size()<<" subPoints"<<endl;TempBasePoint.x=InnerPoints[currentID].X;TempBasePoint.y=InnerPoints[currentID].Y;sort(MeabyPoint.begin(), MeabyPoint.end(),HelpFunctionForSort);PoligoneBase.clear();poligone tmpPoly;for (int i=0;i<MeabyPoint.size();i++){tmp.x=MeabyPoint[i].x;tmp.y=MeabyPoint[i].y;tmpPoly.StackCorners.push_back(tmp);tmp.x,TempBasePoint.y-tmp.y)<<endl;}PoligoneBase.push_back(tmpPoly);}Функция проверки условия принадлежности точки многоугольнику.

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее