Как алгоритмы Tool Path решают, в каком направлении печатать многоугольник с замкнутым контуром

Я понимаю, как программы среза создают наборы замкнутых полигонов для печати послойно. Для заданного многоугольника с замкнутым контуром, который необходимо распечатать, генератор траекторий инструмента будет знать координаты и то, как эти координаты связаны друг с другом, так что при прохождении набора сегментов в таком порядке головка экструдера вернется к первой координате для завершения замкнутого контура.

Мой вопрос заключается в следующем: с помощью какого механизма генератор траекторий инструмента решает, в каком направлении проходить замкнутый контур? Поскольку это цикл, этот цикл может быть напечатан "по часовой стрелке" или "против часовой стрелки", так сказать. Любые подробности и ссылки на дальнейшие объяснения того, как некоторые из известных программ среза определяют это, очень ценятся.

, 👍5


2 ответа


4

Математика

В математике есть способ, которым нужно следовать по пути, и обычно это делается против часовой стрелки:

Если предположить, что периметр путь круга с $r=1$ вокруг $(2,2)$, то путь может быть определен как $f(p)={{\cos(p)+2}\choose{\sin(p)+2}}$ , где $p$ - путь параметр, в данном случае угол от 0 до 360°, и только при увеличении угла вращают правой рукой вокруг. Если бы у нас был тот же путь, но другой отправной точки, сдвиг на $\theta$, тогда путь будет читать $f(p)={{\cos(p+\theta)+2}\choose{\sin(p+\theta)+2}}$. Так что математика обычно идет против часовой стрелки.

Слайсеры

Каждый слайсер применяет математику. Насколько я могу судить, любой срез генерирует контур периметра, который всегда выполняется одинаково, если срезать с одинаковыми настройками. Для одного случая посмотрите на это: 5 seconds of print sliced in cura В этом случае против часовой стрелки, начиная с положения часов 7 часов. Однако другие слайсеры или другие объекты на печатной панели могут использовать другие механизмы, поэтому это делается не так. Они могут двигаться по часовой стрелке, так как решение пути с $p=0°\to360°$ и его решение $p=360°\to0°$ приводит к получению точно такого же отпечатка, только противоположного направлению печати периметра.

До тех пор, пока периметр объекта решается как один замкнутый контур, периметр должен иметь только одно заданное направление. Это направление будет по часовой стрелке или против часовой стрелки в зависимости от того, как слайсер точно выполняет свои вычисления. Поскольку оба направления одинаково верны, это решение программиста. Программист может даже прописать решение по часовой стрелке или против часовой стрелки, основанное на любом факторе, который он хотел. Они могут использовать номер слоя (для чередования направлений), или настройки пользователя, или даже ГСЧ, если захотят.

С другой стороны, то, как работает и записывается память, также может привести к тому, что путь и математика будут выглядеть по-другому. Два примера:

  • Правильное решение пути против часовой стрелки и помещение среза в память FILO, в результате чего операция по часовой стрелке начинается с последней решенной точки.
  • Решение против часовой стрелки и сохранение в FIFO, запуск против часовой стрелки.

Вывод

Слайсеры для 3D-печати имеют жестко запрограммированный способ выбора направления, которому следует следовать при создании G-кода. Любые и все периметры будут напечатаны, начиная с некоторой произвольной точки, в этом направлении. В конце концов, это выбор программиста механизма нарезки, который определяет, будет ли путь выполняться "вперед" или "назад" в математическом смысле.

Дополнение

Слайсеры являются производными от программирования CAM. CAM - обработка с помощью компьютера - учитывает еще одну вещь при решении траектории инструмента, которая не имеет отношения к 3D-принтеру: направление рифления инструмента. На самом деле, это определит, в каком направлении путь даст лучший срез, и изменение рифления должно поменять направление пути, чтобы обеспечить наилучшие результаты.


,

@Теория пути Thetravellingfool обычно преподается на лекциях по анализу и в учебниках. В моем случае это был класс математики для физиков III. FIFO/FILO-это информатика хранения данных (первый вход, первый/последний выход). Куру я могу только внимательно наблюдать., @Trish

@Триш, Это дополнение немного вводит в заблуждение. Рифленое "направление" не имеет ничего общего с путем. Это имеет значение только для веретена. Изменение траектории необходимо только в том случае, если вы выполняете подъем по сравнению с обычным фрезерованием. Это относится к качеству разреза, а не к способности резать., @user77232

@user77232 хороший комментарий, исправлено., @Trish


6

Хотя этот ответ является обоснованной попыткой ответить на вопрос, он основан на личном опыте.

Я обратился к литературе и непосредственно к исходному коду в Cura, чтобы найти ответ. В академической статье "Определение направлений набора 2D контуров для планирования процесса аддитивного производства" Вольпато и др. описывают несколько методов определения произвольных направлений каждого контура в каждом слое и дополнительно определяют, какие контуры были "внутренними", а какие "внешними". Я цитирую из газеты:

Информация о направлении контура, которое либо по часовой стрелке (CW — внутреннее), либо против часовой стрелки (CCW — внешнее), необходима для траектории планирование обработки материалов.

Далее они объясняют важность определения того, какие контуры являются внешними, а какие внутренними, чтобы алгоритм планирования пути позже мог определить, где следует разместить заполнение. Заполнение размещается внутри любых внешних контуров и снаружи любых внутренних контуров.

Когда нормальные векторы в моделях STL считаются правильными, простой способ определить, являются ли 2D контур-это CW или CCW для анализа вектора (креста) произведение между нормальным вектором и вектором, полученным из двух вершин грани.

Это предполагает, что срез уже определил точки пересечения между плоскостями среза и файлом STL и отсортировал эти точки пересечения в замкнутые контуры. Этот сбор начальной точки пересечения и построение контура приводят к произвольной направленности:

Поскольку любой отрезок линии контура может быть первым в последовательности, когда сегменты соединены, его ориентация будет определять направление контура. Следовательно, сформированные 2D-контуры классифицируются случайным образом, и внешнему контуру, например, может быть присвоено направление CW или CCW. Поэтому на этом этапе невозможно правильно определить направления сгенерированных контуров.

Метод трассировки лучей, который фактически основан на тесте "точка в полигоне", определяет, какие контуры содержатся другими, и ориентация каждого контура затем чередуется между CCW и CW, причем самые внешние контуры ориентированы по CCW.

Таким образом, направленность замкнутого контура по умолчанию, сгенерированная программой нарезки для аддитивного производства FDM, оказывается правильной на основе перекрестных продуктов, описанных выше (и на основе дополнительных методов, изложенных в статье). Конечно, стандартная направленность ПЕЧАТНОГО контура не обязательно должна быть такой, по-видимому, это стандарт, принятый сообществом AM. Однако, когда модель создает контуры внутри контуров, определяется произвольная направленность этих контуров, а затем они чередуются снаружи внутрь, начиная с CCW.

В качестве подтверждения, согласно простому комментарию в исходном коде CURA:

/*!
 * Внешние многоугольники должны быть против часовой стрелки,
* внутренние многоугольники отверстий должны быть по часовой стрелке.
 * (Когда отрицательный X находится слева, а отрицательный Y-вниз.)
 */
,

не могли бы вы добавить строку исходного кода и страницы, которые вы цитируете? В противном случае идеальный ответ, @Trish