5

一个流行的开源 3D 打印切片器软件Slic3r是用 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的 fork 上找到,以防有人遇到同样的问题。谢谢您,zdim,您的反馈!

4

0 回答 0