Как оценивается время 3д-печати объекта?
Мне любопытно узнать об алгоритме / принципах, лежащих в основе оценок, которые предоставляют программы для нарезки. Существует ли за этим стандартная техника и насколько она точна ?
@GSH, 👍2
Обсуждение2 ответа
Лучший ответ:
Вообще говоря, типичный алгоритм учитывает настройки скорости слайсера для конкретных особенностей сборки, таких как заполнение, периметры, верхние / нижние слои и т.д. Расстояние, пройденное соплом с определенной скоростью для каждого объекта, также является частью соответствующих уравнений. Существуют некоторые довольно расплывчатые части движения сопла, основанные на ускорении и других факторах, что делает расчеты менее точными.
Насколько он точен?
Не слишком точно. Мой опыт работы с тремя разными слайсерами показывает, что он никогда не был выше десяти процентов. Я считаю, что различные комбинации функций сборки не будут идентичны от одной модели к другой, что не позволит создать даже приблизительную фигуру из предыдущих сборок.
Можете ли вы привести ссылку , где можно было бы увидеть , как делаются эти расчеты ? Как кусок кода или сам алгоритм., @GSH
Ответ Тома ван дер Зандена немного более запутан, чем я могу понять, не будучи человеком кода, но это хорошее начало. Я нашел несколько сайтов, содержащих основные описания вычислений, в том числе http://forums.reprap.org/read.php?2 ,647001, но все они, по-видимому, не учитывают различные факторы. На большинстве сайтов ускорение игнорируется или аппроксимируется. В результате время сборки является приблизительным. Я полагаю, что если бы кто-то применил математику орбитальной динамики к 3D-печати, он мог бы получить более точные результаты., @fred_dot_u
Если вы не имеете дело с многодневными отпечатками, я бы сказал, что 10% - это более чем достаточная точность., @Carl Witthoft
Большая часть программного обеспечения, используемого в 3D-печати, является открытым исходным кодом, как и некоторые слайсеры. Cura, например, делает (или делал, этот исходный код из более старой ветви) свою оценку времени печати в gcodeInterpreter.py.
Соответствующая часть исходного кода (упрощенная и со многими удаленными строками для ясности):
totalMoveTimeMinute = 0.0
pos = util3d.Vector3()
for line in gcodeFile:
G = self.getCodeInt(line, 'G')
if G is not None:
if G == 0 or G == 1: #Move
x = self.getCodeFloat(line, 'X')
y = self.getCodeFloat(line, 'Y')
z = self.getCodeFloat(line, 'Z')
e = self.getCodeFloat(line, 'E')
f = self.getCodeFloat(line, 'F')
oldPos = pos.copy()
pos.x = x
pos.y = y
pos.z = z
feedrate = f
currentE = e
totalMoveTimeMinute += (oldPos - pos).vsize() / feedRate
Как вы можете видеть, (эта версия) Кура просто:
Циклы по всем инструкциям G-кода,
Вычисляет длину каждого хода (в X / Y / Z) и делит ее на скорость подачи, чтобы получить время, которое займет этот ход,
Суммирует это по всем ходам.
и не учитывает:
Ускорение или замедление. Это предполагает, что принтер всегда работает с максимальной скоростью подачи,
Длина экструдированной нити. Скорость подачи - это скорость перемещения (X, Y, Z, E), но Cura смотрит только на (X, Y, Z).
Время, необходимое для нагрева печатного ложа /hotend или самонаведения/автонивелирования,
Последствия замедления принтера, если ходы не могут быть считаны (с USB / SD-карты) достаточно быстро (хотя это было бы довольно трудно включить в какую-либо оценку).
Точность этой оценки может быть сколь угодно плохой, если скорость подачи установлена на какое-то нереальное значение.
Более новые версии Cura используют гораздо более продвинутый метод оценки времени, и его можно найти в timeEstimate.cpp. Это гораздо сложнее, и на самом деле учитывает рывок / ускорение / замедление. Это гораздо точнее.
Мы точно знаем, как работают прошивки 3D-принтеров с открытым исходным кодом, поэтому оценить время печати так же просто, как имитировать выполнение G-кода данной прошивкой. Нет никаких причин, по которым вы не можете получить действительно хорошую оценку (если принять во внимание все тонкости методов ускорения / замедления вашей данной прошивки), но написание кода для нее довольно сложно.
- Почему некоторые модели кажутся сломанными в программном обеспечении для нарезки?
- Как постобработать G-код, чтобы сделать печать быстрее с помощью сплайнов и дуг?
- Где найти координату z в G-коде для delta printer
- Какой параметр в Cura определяет значение "G1 e-{switch_extruder_retraction_amount}" В начале печати?
- Выключение теплового стола для последних нескольких слоев. Хорошая идея или нет?
- Совместимость слайсеров и принтеров
- Не могу заставить печать работать в режиме ожидания, пока я вставляю слайсер nut - Prusa Slicer и Tronxy XY2 pro
- Как возобновить незаконченный проект
И давайте не будем забывать о психологической стороне: начало печати всегда кажется вечным, отчасти потому, что узнаваемые формы мало чем отличаются друг от друга. Последние 25% или около того слоев не только хорошо видны, но и обычно эти слои занимают гораздо меньшую площадь, чем основа, поэтому время на один слой действительно уменьшается., @Carl Witthoft