МД (1194692), страница 14
Текст из файла (страница 14)
Такимобразом «береговая линия» представляет собой последовательность параболических дуг. Уравнение параболы, относительно фокуса F(xF, yF) и директрисыy=L, записывается в следующем виде:=12( −)(( − )2 + 2 − 2 )(2)Из (2) видно, что парабола, ветви которой направлены вверх, сужается помере приближения точки p к «линии зачистки» и постепенно вырождается ввертикально направленный луч, выходящий из точки p.Точка пересечения двух парабол, называемая контрольной точкой (breakpoint), равноудалена от точек pi, pj ϵ P и «береговой линии».
Следовательно, оналежит на ребре ячейки Вороного, проходящего между точками pi и pj ϵ P. Такимобразом, алгоритм Фортуна состоит в моделировании роста «береговой линии»во время движения «линии зачистки» сверху-вниз и отслеживании точного пути, пройденного контрольной точкой, перемещающейся вдоль ребра ячейкиВороного.85При движении «линии зачистки» вниз параболы, формирующие «береговуюлинию», изменяются непрерывно.
Как и во всех алгоритмах, использующихидею метода «sweep line», необходимо проводить дискретное моделированиедвижения «линии зачистки» по точкам плоскости, в которых возникают события, изменяющие структуру «береговой линии». Эти события могут быть двухвидов: событие точки (site events): «линия зачистки» достигает новую точку pi ϵP. В результате новая дуга вставляется в «береговую линию», появляются двеновые контрольные точки; событие круга (circle events, vertex events – событие вершины): длина дугипараболы стремится к нулю вследствие сближения двух контрольных точек. Врезультате дуга исчезает с «береговой линии», а в точке столкновения образуется вершина ячейки Вороного.Реализация метода «sweep line» включает в себя обработку описанных вышетипов событий.Событие точки. Возникновение данного события связано с достижением«линией зачистки» точки pi ϵ P при движении сверху вниз.
В момент, когдапрямая l проходит через pi ϵ P, парабола, соответствующая точке pi (фокусу) ипрямой l (директрисе), вырождается в луч, исходящий из этой точки и направленный в сторону «береговой линии». При дальнейшем движении «линии зачистки» вниз ветви параболы расширяются. Для обработки «события точки»необходимо определить дугу «береговой линии», расположенную непосредственно над новой точкой pi ϵ P. Найденная дуга делится на две путем вставки вточку пересечения «береговой линии» и вертикального луча, исходящего из piновой бесконечно малой дуги. При дальнейшем движении прямой l вниз вставленная дуга будет расширяться до тех пор, пока не соединится с другими ребрами диаграммы.Пара контрольных точек, образующихся при вставке новой дуги в «береговую линию», движется по ребру ячейки Вороного.
В начальный момент време86ни они совпадают, затем начинают двигаться в противоположных направлениях, вычеркивая одно ребро ячейки. При этом образующееся ребро не соединенос остальной частью диаграммы. По мере движения «линии зачистки» вниз ребро ячейки увеличивается до тех пор, пока одна из контрольных точек, образующих ребро, не столкнется с какой-либо другой контрольной точкой. Основным преимуществом «событий точки» является то, что они известны до построения самой диаграммы. Для определения этих событий необходимо отсортировать по убыванию значения ординаты массива точек pi ϵ P.Событие круга. В отличие от «события точки» «событие круга» не известноаприори: оно генерируется динамически по ходу работы алгоритма. Данныйтип события связан с удалением дуги из «береговой линии» при уменьшениидлины дуги до точки вследствие движения пары контрольных точек навстречудруг другу.
Каждое «событие вершины» формируется объектами, являющимися соседними на «береговой линии». События генерируются тройкой точек pi,pj, pk, параболические дуги которых последовательно расположены на «береговой линии» слева направо.абвРисунок 37 – Возникновение «события точки»: а – прямая l не достигла точки pi; б –прямая l достигла точки pi, дуга «береговой линии» разделилась на 2 части бесконечно малойдугой; в – прямая l пересекла точку pi, дуга на «береговой линии» расширяетсяПусть α’ – дуга, которая в следующий момент времени будет удалена, а α иα” – соседние с ней дуги, не являющиеся частями одной параболы. Эти три дуги определяются тремя различными точками pi, pj, pk. В момент времени, когдадуга α’ исчезает с «береговой линии», все три параболы проходят через общуюточку q, т.е.
точка q равноудалена от прямой l и трех заданных точек. Тогда существует окружность с центром в точке q, проходящая через pi, pj, pk, причемнижняя точка окружности касается прямой l. В данной окружности не суще87ствует ни одной точки из P: такая точка была бы ближе к q, чем к l, тем самымпротивореча тому факту, что q находится на «береговой линии». Отсюда следует, что q есть вершина ячейки Вороного.
В момент удаления дуги с «береговойлинии» две контрольные точки сталкиваются, соединяя два новых ребра диаграммы, так как контрольная точка движется по ребру ячейки Вороного. Такимобразом, при возникновении «события точки» образуется новая дуга, а при «событии круга» два растущих ребра сталкиваются, образуя вершину ячейки Вороного.Следует отметить, что в момент возникновения «события круга» формируются данные о треугольнике Делоне.
Говорят, что триангуляция удовлетворяетусловию Делоне, если внутрь окружности, описанной вокруг любого построенного треугольника, не попадает ни одна из заданных точек триангуляции. Следовательно, при возникновении «события круга» (рисунок 37) по узлам pi, pj, pkформируется и вершина ячейки вороного, и треугольник (pi, pj, pk).абвРисунок 38 – Возникновение «события круга»: а – «sweep line» не достигла нижней точки окружности; б – «событие круга», образование вершины q диаграммы; в – отслеживаниенового ребра диаграммыПоэтому триангуляцию Делоне можно получать не только из свойствадвойственности диаграммы Вороного, но и непосредственно в момент образования «события круга» (рисунок 38).2.5 Особенности формирование g-кодаG-код – это язык программирования для станков с числовым программнымуправлением, в число которых входят 3D принтеры.
В целом программа, напи-88санная с использованием g-кода, состоит из кадров, каждый кадр содержитнабор команд управления, как представлено на рисунке 39.Команды управления могут следовать в кадре в любом порядке, но обычнов целях удобства прочтения управляющей программы системы числового программного управления, сначала идут подготовительные команды, затем команды управления перемещением, следом команды выбора режимов обработки материала и завершают кадр – технологические команды [12]. Существует некаябазовая часть языка, на основе которой производители станков придумываютсвои подмножества языка. Например, g-коды Ultimaker и RepRap немного отличаются, и оба они очень примитивны по сравнению с g-кодами для промышленных станков.Рисунок 39 – Пример g-кодаДля 3D принтеров g-код формируется автоматически программойслайсером после загрузки в неё 3D модели детали.
В слайсере задаётся технология изготовления детали, на основе которой и формируется g-код.К примеру, рассмотрим g-код, сформированный слайсером для обычногоRepRap 3D принтера.89Для визуального и покадрового анализа G-кода удобно использовать онлайнсервис Gcode.ws.Условно программу можно разделить на несколько блоков-этапов:1) комментарии с различной информацией;2) подготовительные операции;3) рабочая часть – изготовление детали;4) заключительные операции.90Комментарии можно вставлять отдельным кадром или после основных команд. Начинаются они со знака “точка с запятой”.Рисунок 40 – Установка точки отсчетаДля 3D принтера перед печатью важно установить точку отсчёта координати нагреть стол с хотэндом.
В Cura подготовительные операции называютсяstart.gcode и находятся во вкладке Start/End-Gcode, как представлено на рисунке 40.91M190 S70.000000 – принтер включает нагрев стола и ждёт, пока он ненагреется до заданной температуры 70 градусов.M109 S200.000000 – принтер включает нагрев сопла и ждёт, пока оно ненагреется до заданной температуры 200 градусов.G21 – устанавливает метрическую систему координат.G90 – устанавливает абсолютные перемещения относительно нулей принтера.M82 – устанавливает управление экструдером в абсолютных измерениях.M107 – в начале печати обдув детали отключен.G28 X0 Y0 – перемещение к концевым выключателям осей X и Y для инициализации нулей по этим координатам.
Направление перемещения кареток задаётся в прошивке. G28 Z0 – аналогично G28 X0 Y0 для оси Z.G1 X100 Y100 Z50 {F travel} – точка, в которую выходит сопло перед началом печати.G1 – прямолинейное рабочее перемещение с заданной скоростью F.X100 Y100 Z50 – абсолютные координаты конечной точки для перемещения.{F travel} – скорость перемещения. Видим в G-коде, что она равна 4200, этомм в минуту, а мы везде задаём мм в секунду =70. Здесь участвует координата92Z и она самая медленная, значит, скорость перемещения ограничивается максимальной скоростью перемещения по оси Z, заданной в прошивке, что представлено на рисунке 41.Рисунок 41 – Управление скоростью печатиG92 E0 – обнуляет количество выдавленного пластика.G1 F200 E4 – выдавливает E4 – 4 мм прутка со скоростью F200 – 200 мм вминуту.G1 {F travel} – задаёт скорость для дальнейших рабочих перемещений, покаона не изменится следующей командой.M117 Printing… – выводит на дисплей сообщение Printing…Рабочая часть состоит в основном из перемещений и выдавливания пластикового расплава.G0 – холостой ход без выдавливания пластика.M106 S89 – включился обдув детали со скоростью S89 из диапазона 0-255.Сработало расширение TweakAtZ для уменьшения температуры стола послепечати первых слоёв до 50 градусов.93M140 S50.000000 – команда для изменения температуры стола без ожидания и остановок.Отвод сопла для охлаждения детали, как показано на рисунке 42.G4 P3879 – Время ожидания в миллисекундах P3879 – 3,879 секунд.Рисунок 42 – Завершение работы принтераM104 S0 – Изменение температуры сопла без ожидания.
S0 – отключениенагрева.G91 – устанавливает перемещения в приращениях, то есть если X10, то сопло перемещается на 10 мм в «плюс» относительно текущей координаты.94G1 E-1 F300 – втягивание экструдером E-1 – 1 мм прутка.M84 – отключение шаговых двигателей.2.6 Итоги анализа особенностей FDM печатиВ процессе рассмотрения вопросов, указанных выше, выяснено, что наиболее актуальной в рамках магистерского исследования выглядит проблема статически заданной толщины слоя, так как она не нашла достаточного отраженияв зарубежных и российских литературных источниках, что связано с новизнойрассматриваемой области.Другие вопросы, связанные с недостаточной проработкой методологиитрехмерной печати – проблемы заполнения модели, в том числе, с использованием сетки Вороного, непосредственно связаны с проблемой статически заданной толщины слоя, но по масштабам проблематики, выходят за рамки магистерской диссертации.
Соответственно на первый план выходит проблемаадаптивного подхода динамической толщине слоя при трехмерной печати и еесвязь с отражением в g-коде.Программных продуктов, позволяющих реализовать вышеуказанный подход на данный момент на рынке ПО не представлено. Соответственно разработка данной программы является актуальной. Кроме того, экспериментальныеданные говорят о том, что такая разработка, будучи внедренной в производство, позволит значительно сэкономить время, расход электроэнергии, расходыматериалов и ресурсы техники, что говорит об экономической обоснованностиразработки данного ПО.953 ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЯВ ходе рассмотрения проблем, связанных с трехмерной печать в рамкахсравнительного анализа программ-слайсеров, сравнения пластиков для трехмерной печати по технологии FDM, анализа g-кода и внутренней структурымоделей с разным заполнением сделан вывод о возможности создания программного комплекса, позволяющего реализовать адаптивный подход к динамически задаваемой толщине слоя, что положительным образом скажется насокращении времени при трехмерной печати изделий сложной формы.Данный программный комплекс разработан по заказу ООО "Мега Трейд" ипланируется к внедрению в производство.В процессе проектирования сложной системы формируются определенныепредставления о системе, отражающие ее существенные свойства с той илииной степенью подробности.