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

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

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

Выполняется посредством углового обзора рядом стоящих точек и ожидания закрытия цикла:bool FindPointIntoLoop(float inX,float inY){float dAlpha=0;int countIDInLoops=0;for (int i=0;i<OutLineSeparation.size()-1;i++){if (OutLineSeparationID[i]!=OutLineSeparationID[i+1]){if (fabs(dAlpha)>0.001 ) countIDInLoops++;dAlpha=0;continue;}float p1x=OutLineSeparation[i].X-inX;float p1y=OutLineSeparation[i].Y-inY;float p2x=OutLineSeparation[i+1].X-inX;float p2y=OutLineSeparation[i+1].Y-inY;float angle=atanTrueDegree(p1x,p1y)atanTrueDegree(p2x,p2y);if (angle>180) angle=-(360atanTrueDegree(p1x,p1y)+atanTrueDegree(p2x,p2y));if (angle<-180) angle=(360atanTrueDegree(p2x,p2y)+atanTrueDegree(p1x,p1y));dAlpha+=angle;}if (fabs(dAlpha)>0.001 ) countIDInLoops++;if (countIDInLoops%2==1) return true;119else return false;}Генерация характеристических точек для последующей обработки в использовании алгоритма построения сетки Вороного:void SetInnerPointsRand(){InnerPoints.clear();point tmp;if (OutLineSeparation.size()<2) return;while (InnerPoints.size()<maxInnerRandPoint){tmp.X=(((float)rand()/(float)(RAND_MAX)) *fabs(GabariteMaxX-GabariteMinX))+GabariteMinX;tmp.Y=(((float)rand()/(float)(RAND_MAX)) *fabs(GabariteMaxY-GabariteMinY))+GabariteMinY;tmp.Z=SlicerHeight;if (FindPointIntoLoop(tmp.X,tmp.Y)) InnerPoints.push_back(tmp);}}Сохранение данных в формате g-код.

Перевод созданный массив контуров вg-код, используя системные команды, понятные станкам с ЧПУ:void exportGcode(){ofstream fout ("Export.gcode");fout << "M140 S50.000000"<<endl<<"M109 T0 S190.000000"<<endl<<"T0"<<endl<<"M190 S50.000000"<<endl<<"G21;metric values"<<endl<<"G90;absolute positioning"<<endl<<"M83;set extruder to absolute mode"<<endl<<"M107;start with the fan off"<<endl<<"G28 X0 Y0 ;move X/Y to min endstops"<<endl<<"G28 Z0;move Z to min endstops"<<endl<<"G1 Z15.0 F9000 ;move the platform down 15mm"<<endl<<"G92 E0;zero the extruded length"<<endl<<"G1 F200 E3;extrude 3mm of feed stock"<<endl<<"G92 E0;zero the extruded lengthagain"<<endl<<"G1 F9000"<<endl<<"M107"<<endl;float centX=92.22;float centY=86.75;for (int j=0;j<OutLineLoop.size();j++){fout<<";LAYER:"<<j<<endl;fout<<"G0 F9000 X"<<OutLineLoop.at(j).at(0).X+centX<<"Y"<<OutLineLoop.at(j).at(0).Y+centY<<"Z"<<OutLineLoop.at(j).at(0).Z<<endl;fout<<";TYPE:WALL-OUTER"<<endl;X"<<OutLineLoop.at(j).at(0).X+centX<<"Y"<<OutLineLoop.at(j).at(0).Y+centY<<" E"<<LenghtOfLine()<<endl;120for (int i=1;i<OutLineLoop.at(j).size()-1;i++){if (OutLineLoopID.at(j).at(i1)==OutLineLoopID.at(j).at(i)){fout<<"G1 F1200X"<<OutLineLoop.at(j).at(i).X+centX<<"Y"<<OutLineLoop.at(j).at(i).Y+centY<<"E"<<(LenghtOfLine(OutLineLoop.at(j).at(i),OutLineLoop.at(j).at(i1))/63.697)<<endl;}}fout<<"G1 F1200X"<<OutLineLoop.at(j).at(OutLineLoop.at(j).size()-1).X+centX<<"Y"<<OutLineLoop.at(j).at(OutLineLoop.at(j).size()-1).Y+centY<<"E0.1"<<endl;}fout.close ();cout<<"Save to file is OK!"<<endl;}Приведенный ниже фрагмент программы отвечает за одну из основных особенностей приложения.

Именно в нем прописана реализация создания массивазамкнутых контуров с поиском отклонения предыдущего контура от последующего, благодаря чему, при нахождении одинаковых контуров, алгоритм увеличивает толщину слоя в 2 раза.///Функция генерирующая множество контуров - полный слайсингмодели с функцией адаптивного подхода к высоте слояstatic void GenerateLoopCycleAdaptive(void){///Подготовка к слайсингу и определение его параметровif (OutLineSeparation.size()>0){cout<<"Count vertex = "<<OutLineSeparation.size()<<endl;}///Создание временных подслоев для определения их степенисхожестиfloat tempSliceHight = SlicerHeight;vector <point> tempLoop;vector <int> tempLoopID;vector <point> tempLoop2;vector <int> tempLoopID2;OutLineLoop.clear();OutLineLoopID.clear();///Цикл слайсинга с использованием базовой функции слайсинга слояfor (float height=LayerHeight/2;height<GabariteMaxZLayerHeight;height+=LayerHeight){///Создание подслоев для определения их степени похожести.

Подслайсинг слоевSlicerHeight=height;FindSeparatePoint();FindSeparateLayerOutLine();tempLoop=OutLineSeparation;tempLoopID=OutLineSeparationID;121SlicerHeight=height+LayerHeight;FindSeparatePoint();FindSeparateLayerOutLine();tempLoop2=OutLineSeparation;tempLoopID2=OutLineSeparationID;///Цикл поиска степени похожестиfloat minDeltaOnLoop=300;for (int i=0;i<tempLoop2.size();i++){float minDelta=300;for (int j=0;j<tempLoop.size()-1;j++){if (tempLoopID[j+1]==tempLoopID[j]){if (OffsetByLine(tempLoop[j],tempLoop[j+1],tempLoop2[i])<minDelta)///На каждом этапе определяется переменная - MinDelta - после поиска по всем вершинам - это максимальное из минимальных для каждой точки значение отклонения точек отисходных линийminDelta=OffsetByLine(tempLoop[j],tempLoop[j+1],tempLoop2[i]);}}if (minDelta<minDeltaOnLoop) minDeltaOnLoop=minDelta;}cout<<"Adaptive = "<<minDeltaOnLoop<<endl;/// Если величина отклонения меньше 0.001 мм.

То слойувеличить в 2 разаif (minDeltaOnLoop<=0.00001) {height+=LayerHeight;OutLineLoop.push_back(tempLoop2);OutLineLoopID.push_back(tempLoopID2);}else{OutLineLoop.push_back(tempLoop);OutLineLoopID.push_back(tempLoopID);}}OutLineSeparation.clear();OutLineSeparationID.clear();SlicerHeight=tempSliceHight;}float LenghtOfLine(point a, point b){return sqrt(pow((a.X-b.X),2)+pow((a.Y-b.Y),2));}4.3 Интерфейс и принципы работы приложенияПриложение работает как консольная программа с окном графического вывода, работающего через библиотеку glut.h. Управление производится посредством клавиатуры и мыши. С помощью горячих клавиш можно управлять процессами:– загрузки триангулированной модели;– выбором параметров для слайсинга;122– управления процессом слайсилнга;– настройки визуального оформления программы.Работа с программой начинается с загрузки графического и консольногоокна и выводом их на экран.

Консольное окно предназначено для вывода информации о модели и процесса слайсинга (рисунок 50).Рисунок 50 – Консольное окно программыГрафическое окно позволяет увидеть/ просмотреть трехмерную модель,предназначенную для трехмерной печати/ процесса аддитивного производства.По умолчанию окно содержит оси проекции и базовую плоскость – «стол» builtplate. После выбора модели для слайсинга, объект отображается в окне предпросмотра в виде твердого тела или триангуляционной сетки (рисунок 51).абРисунок 51 – Отображение модели: а – в твердотельном виде; б – в виде сегментовИмеется возможность установки различных режимов просмотра.123В программе отображение требуется для того, чтобы совместить контурдвижения экструдера и модели для удобного обзора подготавливаемого g-кода.В любом из режимов работы программы пользователь может с помощью мышив перспективной проекции наблюдать модель и траекторию движения экструдера с любых ракурсов.

Кроме того, поддерживается функция масштабирования.Начало работы в программе:1) для начала работы, после включения программы при активации графического окна, требуется нажать на клавишу O (клавиатура на английском языке),чтобы отобразился список возможных моделей для слайсинга;2) после загрузки модели, пользователю требуется нажать клавишу S длягенерации точек (вертекс) на пересечении секущей плоскости и гранями модели. Это требуется для того, чтобы разделить процесс создания траектории движения экструдера на 2 этапа и визуально контролировать процесс слайсинга.Эта функция позволяет отслеживать важнейший этап генерации g-код, что вбудущем позволит добавить сетку Вороного.

После генерации точек, пользователь переходит к процессу генерации траекторий;Рисунок 52 – Режим единичного слайсинга3) клавиша D – программа анализирует положение каждой из точек, заключая их в 1 или несколько замкнутых контуров, алгоритм позволяет обнаружить124количество и вложенность контуров друг в друга (режим единичного слайсинга), представленный на рисунке 52;4) далее клавиша F позволяет генерировать множество точек внутри замкнутых контуров, полученных на предыдущем этапе (при нажатии сочетанияклави F+Shift происходит выстраивание сетки в упорядоченном матричном виде) . Следует отметить, что алгоритм учитывает вложенность и позицию контуров на площади слайсинга (рисунок 53);абРисунок 53 – Построение сетки внутреннего заполнения: а – случайное заполнение;б – упорядоченная генерация5) клавиши E, R, T отвечают за поворот модели на 45ᵒ, E – относительно осиOX, R – относительно оси OY, T – относительно оси OZ;6) клавиша X отвечает за скрытие модели, Shift+X за показ модели;7) клавиша N разбивает модель на слои с толщиной по умолчанию 0,2мм;8) клавиша M реализует адаптивный подход к толщине слоя.

При условии,что величина предыдущего контура совпадает с величиной последующего,толщина слоя удваивается (рисунок 54);125абРисунок 54 – Слайсинг модели: а – по умолчанию; б – с адаптивным подходом9) H – навигатор по клавишам;10) A – автоматическая генерация контура;11) после послойного деления модели, результат (как статический, так и динамический) сохраняется в виде g-кода в папку программы при нажатии клавиши V;12) Q – выход.На данный момент программа-слайсер может обрабатывать загруженную вформате stl модель любой конструкции и формы (рисунок 55).Рисунок 55 – Примеры слайсинга моделейНиже, на рисунке приведен результат слайсинга модели конструкции с переменным сечением внешнего контура и сравнение использования алгоритмовстатического и динамического построения контуров (рисунок 56).126абвгРисунок 56 – Слайсинг конструкции с переменным сечением: а – загруженная модель; б –распечатанный контур модели; в – статический слайсинг; г – динамический слайсинг с адаптивным подходомG-код, построенный по загруженным трехмерным моделям, экспортируетсяв файл Export.gcode, хранящийся в папке программы.

Просмотреть полученныйg-код можно в любой из представленных в первой главе программ-слайсеров.Как пример приводится просмотр созданного g-кода в ПО Cura (рисунок 57).127Рисунок 57 – Примеры чтения g-кодаРезультаты работы программы протестированы на всех этапах работы, отзагрузки модели до трехмерной печати, в виде наглядного эксперимента по печати тонкостенных сфер, толщина стенок которой равна проходу одного слояэкструдера (рисунок 58).128абвгдРисунок 58 – Печать тонкостенных сфер: а – разработка трехмерной модели; б – экспортированная в формат *.stl модель; в – триангуляционная сетка модели; г – g-код послойного деления модели; д – результаты печатиТаким образом, результаты работы программы успешно апробированы.1294.4 Экономический эффект внедрения программыС каждым годом технология трехмерной печати становится все более и доступной для рядового потребителя – увеличивается скорость, улучшается точность печати, а сами принтеры становятся компактнее.

Помимо развития самойтехнологии, увеличивается и популярность. Это можно проследить, если посмотреть на рисунок 59, на котором изображена динамика популярности 3Dпринтеров, начиная с 2007 года. Числа по вертикали – общий уровень интересак трехмерной печати, включая уровень продаж и количество поисковых запросов по тематике. Сто баллов на графике отмечают пиковое значение интереса.Рисунок 59 – График популярности технологий трехмерной печатиПоложительный эффект от внедрения в производство программного комплекса заключается в возможности непосредственным образом сократить времяпечати и уменьшить объемы затрачиваемого пластика, за счет увеличения толщины при печати конструкций с одинаковым значением контура.По экспериментальным данным, полученным в результате работы над темой исследования, сокращение времени при печати тонкостенных конструкцийлежит в диапазоне 20-40 %, расход же пластиковой нити сокращается на 1015%.

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

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

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