Небольшое изменение в Perl для заказа экструзии при 3D-печати с Slic3r
Популярное программное обеспечение Slic3r с открытым исходным кодом для 3D печати написано на Perl. Мне нужно внести небольшое изменение в исходный код университетского проекта, но я совершенно незнаком с Perl.
Вот хорошее изображение того, как будет выглядеть двойное выдавливание. По сути, когда вы меняете насадки / материалы, вы создаете проблемы. Вы нуждаетесь в башне для очистки, чтобы избавиться от слюны на форсунках, и вы должны иметь дело с нагревом / охлаждением и другими трудоемкими задачами.
Вот почему все известные мне программы нарезки пытаются минимизировать изменения в экструдере. Например, если для слоя 3 и слоя 4 требуются оба материала, то слой 3 напечатает экструдер / материал 1, затем экструдер / материал 2. На слое 4 вы напечатаете экструдер 2, а затем экструдер 1.
Однако мне нужно всегда печатать в том же порядке, что и номера экструдеров; каждый слой должен начинаться с экструдера 1, затем экструдера 2, затем 3 и т. д.
Мне кажется, я нашел важный фрагмент кода в исходном коде Slic3r. Он находится в lib/Slic3r/Print/GCode.pm, также на Github, начиная со строки 622.
Вот код:
# tweak extruder ordering to save toolchanges
my @extruders = sort { $a <=> $b } keys %by_extruder;
if (@extruders > 1) {
my $last_extruder_id = $self->_gcodegen->writer->extruder->id;
if (exists $by_extruder{$last_extruder_id}) {
@extruders = (
$last_extruder_id,
grep $_ != $last_extruder_id, @extruders,
);
}
}
Я думаю, @extruders - это просто список, который может быть [1], [1, 2], [1,2,3] или более. Я хотел бы изменить этот блок так, чтобы мы всегда писали команды экструдера в числовом порядке (1,2,3).
Если вам нужна более подробная информация о "Почему?", Я был бы рад рассказать вам больше, чем вы когда-либо хотели узнать о печати FFF, печатных теплообменниках и многом другом.
РЕДАКТИРОВАТЬ На самом деле, закомментировав оператор if работал отлично. После перекомпиляции slic3r работает просто отлично, и Gcode кажется правильным. Поэтому, я думаю, это единственное место в программном обеспечении, в котором упоминается порядок. Код Slic3r с этим изменением доступен на моей ветке в Github на случай, если кто-нибудь когда-нибудь столкнется с такой же проблемой. Спасибо, Здим, за отзыв!